Android webkit css样式定制

         我们知道不同的浏览器对css有不同的解析方式,在android webkit 上面默认的定制自己样式的通道,假如我们对这个流程有一个比较清晰的了解,那么我们也可以自己去do itself。

       首先介绍下android webkit的默认的css样式表(声明我都是基于android4.0.1讲解),默认的css样式位置在(android/external/webkit/Source/WebCore/css/html.css)

/*
 * The default style sheet used to render HTML.
 *
 * Copyright (C) 2000 Lars Knoll ([email protected])
 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 */

@namespace "http://www.w3.org/1999/xhtml";

html {
    display: block
}

/* children of the <head> element all have display:none */
head {
    display: none
}

meta {
    display: none
}

title {
    display: none
}

link {
    display: none
}

style {
    display: none
}

script {
    display: none
}

/* generic block-level elements */

body {
    background-repeat:no-repeat !important;
    display: block;
    margin: 8px
}

p {
    display: block;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1__qem;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
}

div {
    display: block
}

layer {
    display: block
}

article, aside, footer, header, hgroup, nav, section {
    display: block
}

marquee {
    display: inline-block;
    overflow: -webkit-marquee
}

address {
    display: block
}

blockquote {
    display: block;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 40px;
    -webkit-margin-end: 40px;
}

figcaption {
    display: block
}

figure {
    display: block;
    -webkit-margin-before: 1em;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 40px;
    -webkit-margin-end: 40px;
}

q {
    display: inline
}

q:before {
    content: open-quote;
}

q:after {
    content: close-quote;
}

center {
    display: block;
    /* special centering to be able to emulate the html4/netscape behaviour */
    text-align: -webkit-center
}

hr {
    display: block;
    -webkit-margin-before: 0.5em;
    -webkit-margin-after: 0.5em;
    -webkit-margin-start: auto;
    -webkit-margin-end: auto;
    border-style: inset;
    border-width: 1px
}

map {
    display: inline
}

/* heading elements */

h1 {
    display: block;
    font-size: 2em;
    -webkit-margin-before: 0.67__qem;
    -webkit-margin-after: 0.67em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

:-webkit-any(article,aside,nav,section) h1 {
    font-size: 1.5em;
    -webkit-margin-before: 0.83__qem;
    -webkit-margin-after: 0.83em;
}

:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
    font-size: 1.17em;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1em;
}

:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
    font-size: 1.00em;
    -webkit-margin-before: 1.33__qem;
    -webkit-margin-after: 1.33em;
}

:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
    font-size: .83em;
    -webkit-margin-before: 1.67__qem;
    -webkit-margin-after: 1.67em;
}

:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
    font-size: .67em;
    -webkit-margin-before: 2.33__qem;
    -webkit-margin-after: 2.33em;
}

h2 {
    display: block;
    font-size: 1.5em;
    -webkit-margin-before: 0.83__qem;
    -webkit-margin-after: 0.83em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

h3 {
    display: block;
    font-size: 1.17em;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

h4 {
    display: block;
    -webkit-margin-before: 1.33__qem;
    -webkit-margin-after: 1.33em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

h5 {
    display: block;
    font-size: .83em;
    -webkit-margin-before: 1.67__qem;
    -webkit-margin-after: 1.67em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

h6 {
    display: block;
    font-size: .67em;
    -webkit-margin-before: 2.33__qem;
    -webkit-margin-after: 2.33em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

/* tables */

table {
    display: table;
    border-collapse: separate;
    border-spacing: 2px;
    border-color: gray
}

thead {
    display: table-header-group;
    vertical-align: middle;
    border-color: inherit
}

tbody {
    display: table-row-group;
    vertical-align: middle;
    border-color: inherit
}

tfoot {
    display: table-footer-group;
    vertical-align: middle;
    border-color: inherit
}

/* for tables without table section elements (can happen with XHTML or dynamically created tables) */
table > tr {
    vertical-align: middle;
}

col {
    display: table-column
}

colgroup {
    display: table-column-group
}

tr {
    display: table-row;
    vertical-align: inherit;
    border-color: inherit
}

td, th {
    display: table-cell;
    vertical-align: inherit
}

th {
    font-weight: bold
}

caption {
    display: table-caption;
    text-align: -webkit-center
}

/* lists */

ul, menu, dir {
    display: block;
    list-style-type: disc;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    -webkit-padding-start: 40px
}

ol {
    display: block;
    list-style-type: decimal;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    -webkit-padding-start: 40px
}

li {
    display: list-item
}

ul ul, ol ul {
    list-style-type: circle
}

ol ol ul, ol ul ul, ul ol ul, ul ul ul {
    list-style-type: square
}

dd {
    display: block;
    -webkit-margin-start: 40px
}

dl {
    display: block;
    -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
}

dt {
    display: block
}

ol ul, ul ol, ul ul, ol ol {
    -webkit-margin-before: 0;
    -webkit-margin-after: 0
}

/* form elements */

form {
    display: block;
    margin-top: 0__qem;
}

label {
    cursor: default;
}

legend {
    display: block;
    -webkit-padding-start: 2px;
    -webkit-padding-end: 2px;
    border: none
}

fieldset {
    display: block;
    -webkit-margin-start: 2px;
    -webkit-margin-end: 2px;
    -webkit-padding-before: 0.35em;
    -webkit-padding-start: 0.75em;
    -webkit-padding-end: 0.75em;
    -webkit-padding-after: 0.625em;
    border: 2px groove ThreeDFace
}

button {
    -webkit-appearance: button;
}

/* Form controls don't go vertical. */
input, textarea, keygen, select, button, isindex, meter, progress {
    -webkit-block-flow: tb !important;
}

input, textarea, keygen, select, button, isindex, datagrid {
    margin: 0__qem;
    font: -webkit-small-control;
    color: initial;
    letter-spacing: normal;
    word-spacing: normal;
    line-height: normal;
    text-transform: none;
    text-indent: 0;
    text-shadow: none;
    display: inline-block;
    text-align: -webkit-auto;
}

input[type="hidden"] {
    display: none
}

input, input[type="password"], input[type="search"], isindex {
    -webkit-appearance: textfield;
    padding: 1px;
    background-color: white;
    border: 2px inset;
    -webkit-rtl-ordering: logical;
    -webkit-user-select: text;
    cursor: auto;
}

input[type="search"] {
    -webkit-appearance: searchfield;
    -webkit-box-sizing: border-box;
}

input[type="search"]::-webkit-search-cancel-button {
    -webkit-appearance: searchfield-cancel-button;
    display: inline-block;
}

input[type="search"]::-webkit-search-decoration {
    -webkit-appearance: searchfield-decoration;
    display: inline-block;
}

input[type="search"]::-webkit-search-results-decoration {
    -webkit-appearance: searchfield-results-decoration;
    display: inline-block;
}

input[type="search"]::-webkit-search-results-button {
    -webkit-appearance: searchfield-results-button;
    display: inline-block;
}

input::-webkit-input-list-button {
    -webkit-appearance: list-button;
    display: inline-block;
}

input::-webkit-inner-spin-button {
    -webkit-appearance: inner-spin-button;
    display: inline-block;
    position: relative;
    cursor: default;
    -webkit-user-select: none;
}

input::-webkit-outer-spin-button {
    -webkit-appearance: outer-spin-button;
    display: inline-block;
    position: relative;
    cursor: default;
    margin-left: 2px;
    -webkit-user-select: none;
}

input::-webkit-input-speech-button {
    -webkit-appearance: -webkit-input-speech-button;
    display: inline-block;
}

keygen, select {
    -webkit-border-radius: 5px;
}

keygen::-webkit-keygen-select {
    margin: 0px;
}

textarea {
    -webkit-appearance: textarea;
    background-color: white;
    border: 1px solid;
    -webkit-rtl-ordering: logical;
    -webkit-user-select: text;
    -webkit-box-orient: vertical;
    resize: auto;
    cursor: auto;
    padding: 2px;
    white-space: pre-wrap;
    word-wrap: break-word;
}

input::-webkit-input-placeholder, isindex::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
    color: darkGray;
}

input[type="password"] {
    -webkit-text-security: disc !important;
}

input[type="hidden"], input[type="image"], input[type="file"] {
    -webkit-appearance: initial;
    padding: initial;
    background-color: initial;
    border: initial;
}

input[type="file"] {
    -webkit-box-align: baseline;
    text-align: start !important;
}

input:-webkit-autofill {
    background-color: #FAFFBD !important;
    background-image:none !important;
    color: #000000 !important;
}

input[type="radio"], input[type="checkbox"] {
    margin: 3px 0.5ex;
    padding: initial;
    background-color: initial;
    border: initial;
}

input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button {
    -webkit-appearance: push-button;
    white-space: pre
}

input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button {
    -webkit-box-align: center;
    text-align: center;
    cursor: default;
    color: ButtonText;
    padding: 2px 6px 3px 6px;
    border: 2px outset ButtonFace;
    background-color: ButtonFace;
    -webkit-box-sizing: border-box
}

input[type="range"] {
    -webkit-appearance: slider-horizontal;
    padding: initial;
    border: initial;
    margin: 2px;
}

input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: sliderthumb-horizontal;
    display: block;
}

input[type="button"]:disabled, input[type="submit"]:disabled, input[type="reset"]:disabled,
input[type="file"]:disabled::-webkit-file-upload-button, button:disabled,
select:disabled, keygen:disabled, optgroup:disabled, option:disabled, datagrid:disabled {
    color: GrayText
}

input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active, input[type="file"]:active::-webkit-file-upload-button, button:active {
    border-style: inset
}

input[type="button"]:active:disabled, input[type="submit"]:active:disabled, input[type="reset"]:active:disabled, input[type="file"]:active:disabled::-webkit-file-upload-button, button:active:disabled {
    border-style: outset
}

area, param {
    display: none
}

input[type="checkbox"] {
    -webkit-appearance: checkbox;
    -webkit-box-sizing: border-box;
}

input[type="radio"] {
    -webkit-appearance: radio;
    -webkit-box-sizing: border-box;
}

select {
    -webkit-appearance: menulist;
    -webkit-box-sizing: border-box;
    -webkit-box-align: center;
    border: 1px solid;
    white-space: pre;
    -webkit-rtl-ordering: logical;
    color: black;
    background-color: white;
    cursor: default;
}

select[size],
select[multiple],
select[size][multiple] {
    -webkit-appearance: listbox;
    -webkit-box-align: start;
    border: 1px inset gray;
    -webkit-border-radius: initial;
    white-space: initial;
}

select[size="0"],
select[size="1"] {
    -webkit-appearance: menulist;
    -webkit-box-align: center;
    border: 1px solid;
    -webkit-border-radius: 5px;
    white-space: pre;
}

optgroup {
    font-weight: bolder;
}

option {
    font-weight: normal;
}

output {
    display: inline;
}

/* form validation message bubble */

::-webkit-validation-bubble {
    display: inline-block;
    z-index: 2147483647;
    position: absolute;
    opacity: 0.95;
    line-height: 0;
    margin: 0;
    -webkit-text-security: none;
    -webkit-transition: opacity 05.5s ease;
}

::-webkit-validation-bubble-message {
    display: block;
    position: relative;
    top: -4px;
    font: message-box;
    color: black;
    min-width: 50px;
    max-width: 200px;
    border: solid 2px #400;
    background: -webkit-gradient(linear, left top, left bottom, from(#f8ecec), to(#e8cccc));
    padding: 8px;
    -webkit-border-radius: 8px;
    -webkit-box-shadow: 4px 4px 4px rgba(100,100,100,0.6),
        inset -2px -2px 1px #d0c4c4,
        inset 2px 2px 1px white;
    line-height: normal;
    z-index: 2147483644;
}

::-webkit-validation-bubble-arrow {
    display: inline-block;
    position: relative;
    left: 32px;
    width: 16px;
    height: 16px;
    background-color: #f8ecec;
    border-width: 2px 0 0 2px;
    border-style: solid;
    border-color: #400;
    box-shadow: inset 2px 2px 1px white;
    -webkit-transform-origin: 0 0;
    -webkit-transform: rotate(45deg);
    z-index: 2147483645;
}

::-webkit-validation-bubble-arrow-clipper {
    display: block;
    overflow: hidden;
    height: 16px;
}

/* meter */

meter {
    -webkit-appearance: meter;
    -webkit-box-sizing: border-box;
    display: inline-box;
    height: 1em;
    width: 5em;
    vertical-align: -0.2em;
}

meter::-webkit-meter-bar {
    background: -webkit-gradient(linear, left top, left bottom, from(#ddd), to(#ddd), color-stop(0.20, #eee), color-stop(0.45, #ccc), color-stop(0.55, #ccc));
    height: 100%;
    -webkit-box-sizing: border-box;
}

meter::-webkit-meter-optimum-value {
    background: -webkit-gradient(linear, left top, left bottom, from(#ad7), to(#ad7), color-stop(0.20, #cea), color-stop(0.45, #7a3), color-stop(0.55, #7a3));
    height: 100%;
    -webkit-box-sizing: border-box;
}

meter::-webkit-meter-suboptimum-value {
    background: -webkit-gradient(linear, left top, left bottom, from(#fe7), to(#fe7), color-stop(0.20, #ffc), color-stop(0.45, #db3), color-stop(0.55, #db3));
    height: 100%;
    -webkit-box-sizing: border-box;
}

meter::-webkit-meter-even-less-good-value {
    background: -webkit-gradient(linear, left top, left bottom, from(#f77), to(#f77), color-stop(0.20, #fcc), color-stop(0.45, #d44), color-stop(0.55, #d44));
    height: 100%;
    -webkit-box-sizing: border-box;
}

/* progress */

progress {
    -webkit-appearance: progress-bar;
    -webkit-box-sizing: border-box;
    display: inline-block;
    height: 1em;
    width: 10em;
    vertical-align: -0.2em;
}

progress::-webkit-progress-bar {
    background-color: gray;
    height: 100%;
    -webkit-box-sizing: border-box;
}

progress::-webkit-progress-value {
    background-color: green;
    height: 100%;
    width: 50%; /* should be removed later */
    -webkit-box-sizing: border-box;
}

/* datagrid */

datagrid {
    height: 150px; /* We don't use width:300px in CSS, since we want width:intrinsic and width:min-intrinsic to reset to 300 properly. */
    -webkit-appearance: datagrid;
    -webkit-box-sizing: border-box;
    -webkit-rtl-ordering: logical;
    color: black;
    background-color: white;
    cursor: default;
    border: 1px inset gray;
    white-space: initial;
}

/* inline elements */

u, ins {
    text-decoration: underline
}

strong, b {
    font-weight: bolder
}

i, cite, em, var, address {
    font-style: italic
}

tt, code, kbd, samp {
    font-family: monospace
}

pre, xmp, plaintext, listing {
    display: block;
    font-family: monospace;
    white-space: pre;
    margin: 1__qem 0
}

mark {
    background-color: yellow;
    color: black
}

big {
    font-size: larger
}

small {
    font-size: smaller
}

s, strike, del {
    text-decoration: line-through
}

sub {
    vertical-align: sub;
    font-size: smaller
}

sup {
    vertical-align: super;
    font-size: smaller
}

nobr {
    white-space: nowrap
}

/* states */

:focus { 
    outline: auto 5px -webkit-focus-ring-color
}

/* Read-only text fields do not show a focus ring but do still receive focus */
html:focus, body:focus, input[readonly]:focus { 
    outline: none
}
  
input:focus, textarea:focus, isindex:focus, keygen:focus, select:focus {
    outline-offset: -2px
}

input[type="button"]:focus,
input[type="checkbox"]:focus,
input[type="file"]:focus,
input[type="hidden"]:focus,
input[type="image"]:focus,
input[type="radio"]:focus,
input[type="reset"]:focus,
input[type="search"]:focus,
input[type="submit"]:focus,
input[type="file"]:focus::-webkit-file-upload-button {
    outline-offset: 0
}
    
a:-webkit-any-link {
    color: -webkit-link;
    text-decoration: none;
    cursor: auto;
}

a:-webkit-any-link:active {
    color: -webkit-activelink
}

/* HTML5 ruby elements */

ruby, rt {
    text-indent: 0; /* blocks used for ruby rendering should not trigger this */
}

rt {
    line-height: normal;
    -webkit-text-emphasis: none;
}

ruby > rt {
    display: block;
    font-size: 50%;
    text-align: -webkit-auto;
}

ruby > rp {
    display: none;
}

/* other elements */

noframes {
    display: none
}

frameset, frame {
    display: block
}

frameset {
    border-color: inherit
}

iframe {
    border: 2px inset
}

details {
    display: block
}

summary {
    display: block
}

summary::-webkit-details-marker {
    display: inline-block;
    width: 0.66em;
    height: 0.66em;
    margin-right: 0.4em;
}

/* page */

@page {
    /* FIXME: Define the right default values for page properties. */
    size: auto;
    margin: auto;
    padding: 0px;
    border-width: 0px;
}

/* noscript is handled internally, as it depends on settings */

上面的就是webkit的css默认表,上面都是一些常见的css默认样式

那么这个文件是如何加载到webcore中那?

按照我们猜测有可能是浏览器启动的时候直接加载进去,如同在页面里面直接加载使用

如同下面的例子:

<head>
        <link rel="stylesheet" type="text/css" href="http://www.dreamdu.com/style.css" />
</head>
实际上webcore中的使用有点类似,但是形式不一样。

下面我们就简单说一下如何把html.css文件加载到webcore内部中

首先我们看到(android/external/webkit/Source/WebCore/Android.derived.mk)

我们看下里面的脚本代码:

# user agent style sheets

style_sheets := $(LOCAL_PATH)/css/html.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/fullscreen.css $(LOCAL_PATH)/css/view-source.css $(LOCAL_PATH)/css/mediaControls.css $(LOCAL_PATH)/css/mediaControlsAndroid.css $(LOCAL_PATH)/css/guangxidvb.css $(LOCAL_PATH)/css/guangxivod.css
ifeq ($(ENABLE_SVG), true)
style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css
endif
GEN := $(intermediates)/css/UserAgentStyleSheets.h
make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl
$(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^)
$(GEN): $(make_css_file_arrays) $(style_sheets)
        $(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)

# character set name table

webkit对html.css做了个特殊的处理,会先把html.css文件转化成16机制的数字

具体生成在:

obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/UserAgentStyleSheets.h

namespace WebCore {
extern const char htmlUserAgentStyleSheet[14912];
extern const char quirksUserAgentStyleSheet[351];
extern const char fullscreenUserAgentStyleSheet[509];
extern const char sourceUserAgentStyleSheet[2014];
extern const char mediaControlsUserAgentStyleSheet[4051];
extern const char mediaControlsAndroidUserAgentStyleSheet[2812];
extern const char guangxidvbUserAgentStyleSheet[14937];
}

obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/UserAgentStyleSheets.cpp

namespace WebCore {
extern const char htmlUserAgentStyleSheet[14912] = {
    64, 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112,
    58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 49, 57,
    57, 57, 47, 120, 104, 116, 109, 108, 34, 59, 32, 104, 116, 109, 108, 32,
    123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107,
    32, 125, 32, 104, 101, 97, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97,
    121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 109, 101, 116, 97, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125,
    32, 116, 105, 116, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121,
    58, 32, 110, 111, 110, 101, 32, 125, 32, 108, 105, 110, 107, 32, 123, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32,
    115, 116, 121, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58,
    32, 110, 111, 110, 101, 32, 125, 32, 115, 99, 114, 105, 112, 116, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125,
    32, 98, 111, 100, 121, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117,
    110, 100, 45, 114, 101, 112, 101, 97, 116, 58, 110, 111, 45, 114, 101, 112,
    101, 97, 116, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32,
    109, 97, 114, 103, 105, 110, 58, 32, 56, 112, 120, 32, 125, 32, 112, 32,
    123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107,
    59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110,
    45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59,
    32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45,
    97, 102, 116, 101, 114, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116,
    97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 125,
    32, 100, 105, 118, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32,
    98, 108, 111, 99, 107, 32, 125, 32, 108, 97, 121, 101, 114, 32, 123, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125,
    32, 97, 114, 116, 105, 99, 108, 101, 44, 32, 97, 115, 105, 100, 101, 44,
    32, 102, 111, 111, 116, 101, 114, 44, 32, 104, 101, 97, 100, 101, 114, 44,
    32, 104, 103, 114, 111, 117, 112, 44, 32, 110, 97, 118, 44, 32, 115, 101,
    99, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58,
    32, 98, 108, 111, 99, 107, 32, 125, 32, 109, 97, 114, 113, 117, 101, 101,
    32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105,
    110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 111, 118, 101, 114, 102, 108,
    111, 119, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 113,
    117, 101, 101, 32, 125, 32, 97, 100, 100, 114, 101, 115, 115, 32, 123, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125,
    32, 98, 108, 111, 99, 107, 113, 117, 111, 116, 101, 32, 123, 32, 100, 105,
    115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102,
    111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101,
    114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48,
    112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103,
    105, 110, 45, 101, 110, 100, 58, 32, 52, 48, 112, 120, 59, 32, 125, 32,
    102, 105, 103, 99, 97, 112, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115,
    112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 102, 105,
    103, 117, 114, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32,
    98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109,
    97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 101,
    109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105,
    110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97,
    114, 116, 58, 32, 52, 48, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 52, 48,
    112, 120, 59, 32, 125, 32, 113, 32, 123, 32, 100, 105, 115, 112, 108, 97,
    121, 58, 32, 105, 110, 108, 105, 110, 101, 32, 125, 32, 113, 58, 98, 101,
    102, 111, 114, 101, 32, 123, 32, 99, 111, 110, 116, 101, 110, 116, 58, 32,
    111, 112, 101, 110, 45, 113, 117, 111, 116, 101, 59, 32, 125, 32, 113, 58,
    97, 102, 116, 101, 114, 32, 123, 32, 99, 111, 110, 116, 101, 110, 116, 58,
    32, 99, 108, 111, 115, 101, 45, 113, 117, 111, 116, 101, 59, 32, 125, 32,
    99, 101, 110, 116, 101, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121,
    58, 32, 98, 108, 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108,
    105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 99, 101, 110,
    116, 101, 114, 32, 125, 32, 104, 114, 32, 123, 32, 100, 105, 115, 112, 108,
    97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101,
    58, 32, 48, 46, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48,
    46, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97,
    114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 97, 117, 116, 111,
    59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110,
    45, 101, 110, 100, 58, 32, 97, 117, 116, 111, 59, 32, 98, 111, 114, 100,
    101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 105, 110, 115, 101, 116, 59,
    32, 98, 111, 114, 100, 101, 114, 45, 119, 105, 100, 116, 104, 58, 32, 49,
    112, 120, 32, 125, 32, 109, 97, 112, 32, 123, 32, 100, 105, 115, 112, 108,
    97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 32, 125, 32, 104, 49, 32,
    123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107,
    59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 50, 101, 109,
    59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110,
    45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 54, 55, 95, 95, 113,
    101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103,
    105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 54, 55, 101, 109,
    59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110,
    45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48,
    59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98,
    111, 108, 100, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97,
    110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101,
    44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49,
    32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46,
    53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114,
    103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 56, 51,
    95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109,
    97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 56,
    51, 101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100,
    101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58,
    45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105,
    99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101,
    99, 116, 105, 111, 110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116,
    45, 115, 105, 122, 101, 58, 32, 49, 46, 49, 55, 101, 109, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101,
    102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116,
    101, 114, 58, 32, 49, 101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98,
    107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44,
    97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111,
    110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40,
    97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97,
    118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98,
    107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44,
    97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111,
    110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122,
    101, 58, 32, 49, 46, 48, 48, 101, 109, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101,
    58, 32, 49, 46, 51, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101,
    114, 58, 32, 49, 46, 51, 51, 101, 109, 59, 32, 125, 32, 58, 45, 119,
    101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108,
    101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116,
    105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110,
    121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44,
    110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119,
    101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108,
    101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116,
    105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110,
    121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44,
    110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49, 32,
    123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 56, 51,
    101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103,
    105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 46, 54, 55, 95,
    95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97,
    114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 46, 54, 55,
    101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97,
    110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101,
    44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45,
    119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99,
    108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99,
    116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97,
    110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101,
    44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45,
    119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99,
    108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99,
    116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97,
    110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101,
    44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49,
    32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 54,
    55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114,
    103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 50, 46, 51, 51,
    95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109,
    97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 50, 46, 51,
    51, 101, 109, 59, 32, 125, 32, 104, 50, 32, 123, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116,
    45, 115, 105, 122, 101, 58, 32, 49, 46, 53, 101, 109, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102,
    111, 114, 101, 58, 32, 48, 46, 56, 51, 95, 95, 113, 101, 109, 59, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97,
    102, 116, 101, 114, 58, 32, 48, 46, 56, 51, 101, 109, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97,
    114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109,
    97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111,
    110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32,
    125, 32, 104, 51, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32,
    98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101,
    58, 32, 49, 46, 49, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58,
    32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49,
    101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103,
    105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58,
    32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58,
    32, 98, 111, 108, 100, 32, 125, 32, 104, 52, 32, 123, 32, 100, 105, 115,
    112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111,
    114, 101, 58, 32, 49, 46, 51, 51, 95, 95, 113, 101, 109, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102,
    116, 101, 114, 58, 32, 49, 46, 51, 51, 101, 109, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114,
    116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97,
    114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110,
    116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125,
    32, 104, 53, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98,
    108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58,
    32, 46, 56, 51, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49,
    46, 54, 55, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32,
    49, 46, 54, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59,
    32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45,
    101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105,
    103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 54, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59,
    32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 54, 55, 101,
    109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105,
    110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 50, 46, 51, 51, 95, 95,
    113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114,
    103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 50, 46, 51, 51, 101,
    109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105,
    110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98,
    107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32,
    48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32,
    98, 111, 108, 100, 32, 125, 32, 116, 97, 98, 108, 101, 32, 123, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 59, 32, 98,
    111, 114, 100, 101, 114, 45, 99, 111, 108, 108, 97, 112, 115, 101, 58, 32,
    115, 101, 112, 97, 114, 97, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114,
    45, 115, 112, 97, 99, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 98,
    111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 103, 114, 97,
    121, 32, 125, 32, 116, 104, 101, 97, 100, 32, 123, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 104, 101, 97, 100, 101,
    114, 45, 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105, 99, 97,
    108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59,
    32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105,
    110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 98, 111, 100, 121, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45,
    114, 111, 119, 45, 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105,
    99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108,
    101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58,
    32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 102, 111, 111, 116,
    32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108,
    101, 45, 102, 111, 111, 116, 101, 114, 45, 103, 114, 111, 117, 112, 59, 32,
    118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32,
    109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99,
    111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32,
    116, 97, 98, 108, 101, 32, 62, 32, 116, 114, 32, 123, 32, 118, 101, 114,
    116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100,
    100, 108, 101, 59, 32, 125, 32, 99, 111, 108, 32, 123, 32, 100, 105, 115,
    112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 111, 108, 117,
    109, 110, 32, 125, 32, 99, 111, 108, 103, 114, 111, 117, 112, 32, 123, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99,
    111, 108, 117, 109, 110, 45, 103, 114, 111, 117, 112, 32, 125, 32, 116, 114,
    32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108,
    101, 45, 114, 111, 119, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45,
    97, 108, 105, 103, 110, 58, 32, 105, 110, 104, 101, 114, 105, 116, 59, 32,
    98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110,
    104, 101, 114, 105, 116, 32, 125, 32, 116, 100, 44, 32, 116, 104, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45,
    99, 101, 108, 108, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97,
    108, 105, 103, 110, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32,
    116, 104, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116,
    58, 32, 98, 111, 108, 100, 32, 125, 32, 99, 97, 112, 116, 105, 111, 110,
    32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108,
    101, 45, 99, 97, 112, 116, 105, 111, 110, 59, 32, 116, 101, 120, 116, 45,
    97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 99,
    101, 110, 116, 101, 114, 32, 125, 32, 117, 108, 44, 32, 109, 101, 110, 117,
    44, 32, 100, 105, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58,
    32, 98, 108, 111, 99, 107, 59, 32, 108, 105, 115, 116, 45, 115, 116, 121,
    108, 101, 45, 116, 121, 112, 101, 58, 32, 100, 105, 115, 99, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101,
    102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116,
    101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48,
    59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110,
    45, 101, 110, 100, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 112, 97, 100, 100, 105, 110, 103, 45, 115, 116, 97, 114, 116, 58, 32,
    52, 48, 112, 120, 32, 125, 32, 111, 108, 32, 123, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 108, 105, 115, 116,
    45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 100, 101, 99,
    105, 109, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97,
    114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95,
    113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114,
    103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115,
    116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45,
    115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 108, 105,
    32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 108, 105, 115, 116,
    45, 105, 116, 101, 109, 32, 125, 32, 117, 108, 32, 117, 108, 44, 32, 111,
    108, 32, 117, 108, 32, 123, 32, 108, 105, 115, 116, 45, 115, 116, 121, 108,
    101, 45, 116, 121, 112, 101, 58, 32, 99, 105, 114, 99, 108, 101, 32, 125,
    32, 111, 108, 32, 111, 108, 32, 117, 108, 44, 32, 111, 108, 32, 117, 108,
    32, 117, 108, 44, 32, 117, 108, 32, 111, 108, 32, 117, 108, 44, 32, 117,
    108, 32, 117, 108, 32, 117, 108, 32, 123, 32, 108, 105, 115, 116, 45, 115,
    116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 115, 113, 117, 97, 114,
    101, 32, 125, 32, 100, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121,
    58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 52,
    48, 112, 120, 32, 125, 32, 100, 108, 32, 123, 32, 100, 105, 115, 112, 108,
    97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101,
    58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32,
    49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114,
    103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100,
    58, 32, 48, 59, 32, 125, 32, 100, 116, 32, 123, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 111, 108, 32,
    117, 108, 44, 32, 117, 108, 32, 111, 108, 44, 32, 117, 108, 32, 117, 108,
    44, 32, 111, 108, 32, 111, 108, 32, 123, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58,
    32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103,
    105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 32, 125, 32, 102, 111,
    114, 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108,
    111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 45, 116, 111, 112, 58,
    32, 48, 95, 95, 113, 101, 109, 59, 32, 125, 32, 108, 97, 98, 101, 108,
    32, 123, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117,
    108, 116, 59, 32, 125, 32, 108, 101, 103, 101, 110, 100, 32, 123, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115,
    116, 97, 114, 116, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 101, 110, 100, 58, 32,
    50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 110, 111, 110,
    101, 32, 125, 32, 102, 105, 101, 108, 100, 115, 101, 116, 32, 123, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116,
    97, 114, 116, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 50, 112,
    120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105,
    110, 103, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 51, 53, 101,
    109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105,
    110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 48, 46, 55, 53, 101, 109,
    59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110,
    103, 45, 101, 110, 100, 58, 32, 48, 46, 55, 53, 101, 109, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 97,
    102, 116, 101, 114, 58, 32, 48, 46, 54, 50, 53, 101, 109, 59, 32, 98,
    111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 103, 114, 111, 111, 118,
    101, 32, 84, 104, 114, 101, 101, 68, 70, 97, 99, 101, 32, 125, 32, 98,
    117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 98, 117, 116, 116,
    111, 110, 59, 32, 125, 32, 105, 110, 112, 117, 116, 44, 32, 116, 101, 120,
    116, 97, 114, 101, 97, 44, 32, 107, 101, 121, 103, 101, 110, 44, 32, 115,
    101, 108, 101, 99, 116, 44, 32, 98, 117, 116, 116, 111, 110, 44, 32, 105,
    115, 105, 110, 100, 101, 120, 44, 32, 109, 101, 116, 101, 114, 44, 32, 112,
    114, 111, 103, 114, 101, 115, 115, 32, 123, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 98, 108, 111, 99, 107, 45, 102, 108, 111, 119, 58, 32, 116, 98,
    32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105,
    110, 112, 117, 116, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 44, 32,
    107, 101, 121, 103, 101, 110, 44, 32, 115, 101, 108, 101, 99, 116, 44, 32,
    98, 117, 116, 116, 111, 110, 44, 32, 105, 115, 105, 110, 100, 101, 120, 44,
    32, 100, 97, 116, 97, 103, 114, 105, 100, 32, 123, 32, 109, 97, 114, 103,
    105, 110, 58, 32, 48, 95, 95, 113, 101, 109, 59, 32, 102, 111, 110, 116,
    58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 115, 109, 97, 108, 108, 45,
    99, 111, 110, 116, 114, 111, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32,
    105, 110, 105, 116, 105, 97, 108, 59, 32, 108, 101, 116, 116, 101, 114, 45,
    115, 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59,
    32, 119, 111, 114, 100, 45, 115, 112, 97, 99, 105, 110, 103, 58, 32, 110,
    111, 114, 109, 97, 108, 59, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103,
    104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 116, 101, 120, 116,
    45, 116, 114, 97, 110, 115, 102, 111, 114, 109, 58, 32, 110, 111, 110, 101,
    59, 32, 116, 101, 120, 116, 45, 105, 110, 100, 101, 110, 116, 58, 32, 48,
    59, 32, 116, 101, 120, 116, 45, 115, 104, 97, 100, 111, 119, 58, 32, 110,
    111, 110, 101, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110,
    108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 116, 101, 120, 116,
    45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 117, 116, 111, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121,
    112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 93, 32, 123, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105,
    110, 112, 117, 116, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101,
    61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, 44, 32, 105, 110,
    112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104,
    34, 93, 44, 32, 105, 115, 105, 110, 100, 101, 120, 32, 123, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101,
    58, 32, 116, 101, 120, 116, 102, 105, 101, 108, 100, 59, 32, 112, 97, 100,
    100, 105, 110, 103, 58, 32, 49, 112, 120, 59, 32, 98, 97, 99, 107, 103,
    114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105,
    116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32,
    105, 110, 115, 101, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114,
    116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103,
    105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 117, 115,
    101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, 101, 120, 116, 59,
    32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 125,
    32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97,
    114, 99, 104, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114,
    99, 104, 102, 105, 101, 108, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114,
    100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116,
    91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58,
    58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45,
    99, 97, 110, 99, 101, 108, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110,
    99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45,
    99, 97, 110, 99, 101, 108, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98,
    108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121,
    112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119,
    101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 100, 101, 99,
    111, 114, 97, 116, 105, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101,
    97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 100, 101, 99, 111, 114, 97,
    116, 105, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105,
    110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105,
    110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99,
    104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97,
    114, 99, 104, 45, 114, 101, 115, 117, 108, 116, 115, 45, 100, 101, 99, 111,
    114, 97, 116, 105, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97,
    114, 99, 104, 102, 105, 101, 108, 100, 45, 114, 101, 115, 117, 108, 116, 115,
    45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 59, 32, 100, 105, 115,
    112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111,
    99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101,
    61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98,
    107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 114, 101, 115, 117, 108,
    116, 115, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98,
    107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32,
    115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 114, 101, 115, 117,
    108, 116, 115, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99,
    107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98,
    107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 108, 105, 115, 116, 45, 98,
    117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 108, 105, 115, 116,
    45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121,
    58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32,
    125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116,
    45, 105, 110, 110, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116,
    111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112,
    101, 97, 114, 97, 110, 99, 101, 58, 32, 105, 110, 110, 101, 114, 45, 115,
    112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99,
    107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 114, 101, 108,
    97, 116, 105, 118, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100,
    101, 102, 97, 117, 108, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 110, 111, 110,
    101, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98,
    107, 105, 116, 45, 111, 117, 116, 101, 114, 45, 115, 112, 105, 110, 45, 98,
    117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 111, 117, 116, 101,
    114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98,
    108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32,
    114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 99, 117, 114, 115, 111, 114,
    58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 109, 97, 114, 103, 105,
    110, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116,
    58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58,
    58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 115,
    112, 101, 101, 99, 104, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99,
    101, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116,
    45, 115, 112, 101, 101, 99, 104, 45, 98, 117, 116, 116, 111, 110, 59, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45,
    98, 108, 111, 99, 107, 59, 32, 125, 32, 107, 101, 121, 103, 101, 110, 44,
    32, 115, 101, 108, 101, 99, 116, 32, 123, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58,
    32, 53, 112, 120, 59, 32, 125, 32, 107, 101, 121, 103, 101, 110, 58, 58,
    45, 119, 101, 98, 107, 105, 116, 45, 107, 101, 121, 103, 101, 110, 45, 115,
    101, 108, 101, 99, 116, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32,
    48, 112, 120, 59, 32, 125, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32,
    123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114,
    97, 110, 99, 101, 58, 32, 116, 101, 120, 116, 97, 114, 101, 97, 59, 32,
    98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114,
    58, 32, 119, 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58,
    32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98,
    107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103,
    58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32,
    116, 101, 120, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111,
    120, 45, 111, 114, 105, 101, 110, 116, 58, 32, 118, 101, 114, 116, 105, 99,
    97, 108, 59, 32, 114, 101, 115, 105, 122, 101, 58, 32, 97, 117, 116, 111,
    59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32,
    112, 97, 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 119, 104,
    105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 45, 119,
    114, 97, 112, 59, 32, 119, 111, 114, 100, 45, 119, 114, 97, 112, 58, 32,
    98, 114, 101, 97, 107, 45, 119, 111, 114, 100, 59, 32, 125, 32, 105, 110,
    112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112,
    117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 44, 32,
    105, 115, 105, 110, 100, 101, 120, 58, 58, 45, 119, 101, 98, 107, 105, 116,
    45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100,
    101, 114, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 58, 58, 45, 119,
    101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99,
    101, 104, 111, 108, 100, 101, 114, 32, 123, 32, 99, 111, 108, 111, 114, 58,
    32, 100, 97, 114, 107, 71, 114, 97, 121, 59, 32, 125, 32, 105, 110, 112,
    117, 116, 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114,
    100, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101,
    120, 116, 45, 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 100, 105, 115,
    99, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32,
    105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100,
    101, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101,
    61, 34, 105, 109, 97, 103, 101, 34, 93, 44, 32, 105, 110, 112, 117, 116,
    91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110,
    99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 112, 97, 100,
    100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98,
    97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58,
    32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114,
    58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110, 112,
    117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32,
    123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108,
    105, 103, 110, 58, 32, 98, 97, 115, 101, 108, 105, 110, 101, 59, 32, 116,
    101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116,
    32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105,
    110, 112, 117, 116, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116,
    111, 102, 105, 108, 108, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117,
    110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 35, 70, 65, 70, 70, 66,
    68, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 97,
    99, 107, 103, 114, 111, 117, 110, 100, 45, 105, 109, 97, 103, 101, 58, 110,
    111, 110, 101, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32,
    99, 111, 108, 111, 114, 58, 32, 35, 48, 48, 48, 48, 48, 48, 32, 33,
    105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112,
    117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93,
    44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 99, 104,
    101, 99, 107, 98, 111, 120, 34, 93, 32, 123, 32, 109, 97, 114, 103, 105,
    110, 58, 32, 51, 112, 120, 32, 48, 46, 53, 101, 120, 59, 32, 112, 97,
    100, 100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32,
    98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114,
    58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101,
    114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110,
    112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110,
    34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34,
    115, 117, 98, 109, 105, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91,
    116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 44, 32, 105,
    110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34,
    93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45,
    117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110,
    99, 101, 58, 32, 112, 117, 115, 104, 45, 98, 117, 116, 116, 111, 110, 59,
    32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114,
    101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34,
    98, 117, 116, 116, 111, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91,
    116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 44, 32,
    105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101,
    116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61,
    34, 102, 105, 108, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116,
    45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116,
    116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119,
    101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58,
    32, 99, 101, 110, 116, 101, 114, 59, 32, 116, 101, 120, 116, 45, 97, 108,
    105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 99, 117, 114,
    115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 99, 111,
    108, 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, 84, 101, 120, 116, 59,
    32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, 32, 54, 112,
    120, 32, 51, 112, 120, 32, 54, 112, 120, 59, 32, 98, 111, 114, 100, 101,
    114, 58, 32, 50, 112, 120, 32, 111, 117, 116, 115, 101, 116, 32, 66, 117,
    116, 116, 111, 110, 70, 97, 99, 101, 59, 32, 98, 97, 99, 107, 103, 114,
    111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 66, 117, 116, 116,
    111, 110, 70, 97, 99, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100,
    101, 114, 45, 98, 111, 120, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116,
    121, 112, 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 32, 123, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99,
    101, 58, 32, 115, 108, 105, 100, 101, 114, 45, 104, 111, 114, 105, 122, 111,
    110, 116, 97, 108, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105,
    110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32,
    105, 110, 105, 116, 105, 97, 108, 59, 32, 109, 97, 114, 103, 105, 110, 58,
    32, 50, 112, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121,
    112, 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 58, 58, 45, 119, 101,
    98, 107, 105, 116, 45, 115, 108, 105, 100, 101, 114, 45, 116, 104, 117, 109,
    98, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101,
    97, 114, 97, 110, 99, 101, 58, 32, 115, 108, 105, 100, 101, 114, 116, 104,
    117, 109, 98, 45, 104, 111, 114, 105, 122, 111, 110, 116, 97, 108, 59, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32,
    125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117,
    116, 116, 111, 110, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44,
    32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98,
    109, 105, 116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32,
    105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101,
    116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110,
    112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93,
    58, 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, 101, 98, 107,
    105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98,
    117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 100, 105,
    115, 97, 98, 108, 101, 100, 44, 32, 115, 101, 108, 101, 99, 116, 58, 100,
    105, 115, 97, 98, 108, 101, 100, 44, 32, 107, 101, 121, 103, 101, 110, 58,
    100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, 103, 114, 111,
    117, 112, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116,
    105, 111, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 100, 97,
    116, 97, 103, 114, 105, 100, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32,
    123, 32, 99, 111, 108, 111, 114, 58, 32, 71, 114, 97, 121, 84, 101, 120,
    116, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34,
    98, 117, 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44,
    32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98,
    109, 105, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110,
    112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34,
    93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, 116, 91,
    116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, 116,
    105, 118, 101, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108,
    101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 44,
    32, 98, 117, 116, 116, 111, 110, 58, 97, 99, 116, 105, 118, 101, 32, 123,
    32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 105,
    110, 115, 101, 116, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112,
    101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105,
    118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112,
    117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34,
    93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101,
    100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114,
    101, 115, 101, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105,
    115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121,
    112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, 116, 105, 118,
    101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, 101, 98,
    107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45,
    98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 97,
    99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123,
    32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 111,
    117, 116, 115, 101, 116, 32, 125, 32, 97, 114, 101, 97, 44, 32, 112, 97,
    114, 97, 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110,
    111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101,
    61, 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 32, 123, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99,
    101, 58, 32, 99, 104, 101, 99, 107, 98, 111, 120, 59, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58,
    32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 105,
    110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111,
    34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112,
    101, 97, 114, 97, 110, 99, 101, 58, 32, 114, 97, 100, 105, 111, 59, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105,
    110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32,
    125, 32, 115, 101, 108, 101, 99, 116, 32, 123, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109,
    101, 110, 117, 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114,
    100, 101, 114, 45, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116,
    101, 114, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32,
    115, 111, 108, 105, 100, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97,
    99, 101, 58, 32, 112, 114, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108,
    111, 103, 105, 99, 97, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98,
    108, 97, 99, 107, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100,
    45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 99,
    117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32,
    125, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, 44, 32,
    115, 101, 108, 101, 99, 116, 91, 109, 117, 108, 116, 105, 112, 108, 101, 93,
    44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, 91, 109,
    117, 108, 116, 105, 112, 108, 101, 93, 32, 123, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 108,
    105, 115, 116, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116,
    59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 105, 110,
    115, 101, 116, 32, 103, 114, 97, 121, 59, 32, 45, 119, 101, 98, 107, 105,
    116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58,
    32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 119, 104, 105, 116, 101, 45,
    115, 112, 97, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32,
    125, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61, 34, 48,
    34, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61,
    34, 49, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97,
    112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, 117, 108,
    105, 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120,
    45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32,
    98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105,
    100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101,
    114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, 32, 119,
    104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59,
    32, 125, 32, 111, 112, 116, 103, 114, 111, 117, 112, 32, 123, 32, 102, 111,
    110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101,
    114, 59, 32, 125, 32, 111, 112, 116, 105, 111, 110, 32, 123, 32, 102, 111,
    110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97,
    108, 59, 32, 125, 32, 111, 117, 116, 112, 117, 116, 32, 123, 32, 100, 105,
    115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 59, 32, 125,
    32, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100,
    97, 116, 105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 32, 123, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98,
    108, 111, 99, 107, 59, 32, 122, 45, 105, 110, 100, 101, 120, 58, 32, 50,
    49, 52, 55, 52, 56, 51, 54, 52, 55, 59, 32, 112, 111, 115, 105, 116,
    105, 111, 110, 58, 32, 97, 98, 115, 111, 108, 117, 116, 101, 59, 32, 111,
    112, 97, 99, 105, 116, 121, 58, 32, 48, 46, 57, 53, 59, 32, 108, 105,
    110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 48, 59, 32, 109, 97,
    114, 103, 105, 110, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 116, 101, 120, 116, 45, 115, 101, 99, 117, 114, 105, 116, 121, 58, 32,
    110, 111, 110, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 114,
    97, 110, 115, 105, 116, 105, 111, 110, 58, 32, 111, 112, 97, 99, 105, 116,
    121, 32, 48, 53, 46, 53, 115, 32, 101, 97, 115, 101, 59, 32, 125, 32,
    58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97,
    116, 105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 45, 109, 101, 115, 115,
    97, 103, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98,
    108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32,
    114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 116, 111, 112, 58, 32, 45,
    52, 112, 120, 59, 32, 102, 111, 110, 116, 58, 32, 109, 101, 115, 115, 97,
    103, 101, 45, 98, 111, 120, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98,
    108, 97, 99, 107, 59, 32, 109, 105, 110, 45, 119, 105, 100, 116, 104, 58,
    32, 53, 48, 112, 120, 59, 32, 109, 97, 120, 45, 119, 105, 100, 116, 104,
    58, 32, 50, 48, 48, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58,
    32, 115, 111, 108, 105, 100, 32, 50, 112, 120, 32, 35, 52, 48, 48, 59,
    32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101,
    98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105,
    110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32,
    108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111,
    109, 40, 35, 102, 56, 101, 99, 101, 99, 41, 44, 32, 116, 111, 40, 35,
    101, 56, 99, 99, 99, 99, 41, 41, 59, 32, 112, 97, 100, 100, 105, 110,
    103, 58, 32, 56, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45,
    98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 56,
    112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45,
    115, 104, 97, 100, 111, 119, 58, 32, 52, 112, 120, 32, 52, 112, 120, 32,
    52, 112, 120, 32, 114, 103, 98, 97, 40, 49, 48, 48, 44, 49, 48, 48,
    44, 49, 48, 48, 44, 48, 46, 54, 41, 44, 32, 105, 110, 115, 101, 116,
    32, 45, 50, 112, 120, 32, 45, 50, 112, 120, 32, 49, 112, 120, 32, 35,
    100, 48, 99, 52, 99, 52, 44, 32, 105, 110, 115, 101, 116, 32, 50, 112,
    120, 32, 50, 112, 120, 32, 49, 112, 120, 32, 119, 104, 105, 116, 101, 59,
    32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111,
    114, 109, 97, 108, 59, 32, 122, 45, 105, 110, 100, 101, 120, 58, 32, 50,
    49, 52, 55, 52, 56, 51, 54, 52, 52, 59, 32, 125, 32, 58, 58, 45,
    119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97, 116, 105, 111,
    110, 45, 98, 117, 98, 98, 108, 101, 45, 97, 114, 114, 111, 119, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101,
    45, 98, 108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110,
    58, 32, 114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 108, 101, 102, 116,
    58, 32, 51, 50, 112, 120, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49,
    54, 112, 120, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 54, 112,
    120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111,
    108, 111, 114, 58, 32, 35, 102, 56, 101, 99, 101, 99, 59, 32, 98, 111,
    114, 100, 101, 114, 45, 119, 105, 100, 116, 104, 58, 32, 50, 112, 120, 32,
    48, 32, 48, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 45,
    115, 116, 121, 108, 101, 58, 32, 115, 111, 108, 105, 100, 59, 32, 98, 111,
    114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 35, 52, 48, 48,
    59, 32, 98, 111, 120, 45, 115, 104, 97, 100, 111, 119, 58, 32, 105, 110,
    115, 101, 116, 32, 50, 112, 120, 32, 50, 112, 120, 32, 49, 112, 120, 32,
    119, 104, 105, 116, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116,
    114, 97, 110, 115, 102, 111, 114, 109, 45, 111, 114, 105, 103, 105, 110, 58,
    32, 48, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 114,
    97, 110, 115, 102, 111, 114, 109, 58, 32, 114, 111, 116, 97, 116, 101, 40,
    52, 53, 100, 101, 103, 41, 59, 32, 122, 45, 105, 110, 100, 101, 120, 58,
    32, 50, 49, 52, 55, 52, 56, 51, 54, 52, 53, 59, 32, 125, 32, 58,
    58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97, 116,
    105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 45, 97, 114, 114, 111, 119,
    45, 99, 108, 105, 112, 112, 101, 114, 32, 123, 32, 100, 105, 115, 112, 108,
    97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 111, 118, 101, 114, 102,
    108, 111, 119, 58, 32, 104, 105, 100, 100, 101, 110, 59, 32, 104, 101, 105,
    103, 104, 116, 58, 32, 49, 54, 112, 120, 59, 32, 125, 32, 109, 101, 116,
    101, 114, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112,
    101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 116, 101, 114, 59, 32,
    45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105,
    110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45,
    98, 111, 120, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 101, 109,
    59, 32, 119, 105, 100, 116, 104, 58, 32, 53, 101, 109, 59, 32, 118, 101,
    114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 45, 48,
    46, 50, 101, 109, 59, 32, 125, 32, 109, 101, 116, 101, 114, 58, 58, 45,
    119, 101, 98, 107, 105, 116, 45, 109, 101, 116, 101, 114, 45, 98, 97, 114,
    32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40,
    108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112,
    44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102,
    114, 111, 109, 40, 35, 100, 100, 100, 41, 44, 32, 116, 111, 40, 35, 100,
    100, 100, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40,
    48, 46, 50, 48, 44, 32, 35, 101, 101, 101, 41, 44, 32, 99, 111, 108,
    111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44, 32, 35, 99,
    99, 99, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40,
    48, 46, 53, 53, 44, 32, 35, 99, 99, 99, 41, 41, 59, 32, 104, 101,
    105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98,
    107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32,
    98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 109, 101,
    116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 109, 101, 116,
    101, 114, 45, 111, 112, 116, 105, 109, 117, 109, 45, 118, 97, 108, 117, 101,
    32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40,
    108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112,
    44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102,
    114, 111, 109, 40, 35, 97, 100, 55, 41, 44, 32, 116, 111, 40, 35, 97,
    100, 55, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40,
    48, 46, 50, 48, 44, 32, 35, 99, 101, 97, 41, 44, 32, 99, 111, 108,
    111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44, 32, 35, 55,
    97, 51, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40,
    48, 46, 53, 53, 44, 32, 35, 55, 97, 51, 41, 41, 59, 32, 104, 101,
    105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98,
    107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32,
    98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 109, 101,
    116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 109, 101, 116,
    101, 114, 45, 115, 117, 98, 111, 112, 116, 105, 109, 117, 109, 45, 118, 97,
    108, 117, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100,
    58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101,
    110, 116, 40, 108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32,
    116, 111, 112, 44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109,
    44, 32, 102, 114, 111, 109, 40, 35, 102, 101, 55, 41, 44, 32, 116, 111,
    40, 35, 102, 101, 55, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116,
    111, 112, 40, 48, 46, 50, 48, 44, 32, 35, 102, 102, 99, 41, 44, 32,
    99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44,
    32, 35, 100, 98, 51, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116,
    111, 112, 40, 48, 46, 53, 53, 44, 32, 35, 100, 98, 51, 41, 41, 59,
    32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110,
    103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125,
    32, 109, 101, 116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45,
    109, 101, 116, 101, 114, 45, 101, 118, 101, 110, 45, 108, 101, 115, 115, 45,
    103, 111, 111, 100, 45, 118, 97, 108, 117, 101, 32, 123, 32, 98, 97, 99,
    107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105, 110, 101, 97, 114,
    44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32, 108, 101, 102, 116,
    32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111, 109, 40, 35, 102,
    55, 55, 41, 44, 32, 116, 111, 40, 35, 102, 55, 55, 41, 44, 32, 99,
    111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 50, 48, 44, 32,
    35, 102, 99, 99, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111,
    112, 40, 48, 46, 52, 53, 44, 32, 35, 100, 52, 52, 41, 44, 32, 99,
    111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 53, 53, 44, 32,
    35, 100, 52, 52, 41, 41, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32,
    49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111,
    120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114,
    45, 98, 111, 120, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115,
    32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97,
    114, 97, 110, 99, 101, 58, 32, 112, 114, 111, 103, 114, 101, 115, 115, 45,
    98, 97, 114, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120,
    45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45,
    98, 111, 120, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110,
    108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 104, 101, 105, 103,
    104, 116, 58, 32, 49, 101, 109, 59, 32, 119, 105, 100, 116, 104, 58, 32,
    49, 48, 101, 109, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97,
    108, 105, 103, 110, 58, 32, 45, 48, 46, 50, 101, 109, 59, 32, 125, 32,
    112, 114, 111, 103, 114, 101, 115, 115, 58, 58, 45, 119, 101, 98, 107, 105,
    116, 45, 112, 114, 111, 103, 114, 101, 115, 115, 45, 98, 97, 114, 32, 123,
    32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111,
    114, 58, 32, 103, 114, 97, 121, 59, 32, 104, 101, 105, 103, 104, 116, 58,
    32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98,
    111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101,
    114, 45, 98, 111, 120, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115,
    115, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 112, 114, 111, 103, 114,
    101, 115, 115, 45, 118, 97, 108, 117, 101, 32, 123, 32, 98, 97, 99, 107,
    103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 103, 114,
    101, 101, 110, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48,
    37, 59, 32, 119, 105, 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 45,
    119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110,
    103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125,
    32, 100, 97, 116, 97, 103, 114, 105, 100, 32, 123, 32, 104, 101, 105, 103,
    104, 116, 58, 32, 49, 53, 48, 112, 120, 59, 32, 45, 119, 101, 98, 107,
    105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 100,
    97, 116, 97, 103, 114, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114,
    100, 101, 114, 45, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108,
    111, 103, 105, 99, 97, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98,
    108, 97, 99, 107, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100,
    45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 99,
    117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32,
    98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 105, 110, 115, 101,
    116, 32, 103, 114, 97, 121, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112,
    97, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32,
    117, 44, 32, 105, 110, 115, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101,
    99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, 108,
    105, 110, 101, 32, 125, 32, 115, 116, 114, 111, 110, 103, 44, 32, 98, 32,
    123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98,
    111, 108, 100, 101, 114, 32, 125, 32, 105, 44, 32, 99, 105, 116, 101, 44,
    32, 101, 109, 44, 32, 118, 97, 114, 44, 32, 97, 100, 100, 114, 101, 115,
    115, 32, 123, 32, 102, 111, 110, 116, 45, 115, 116, 121, 108, 101, 58, 32,
    105, 116, 97, 108, 105, 99, 32, 125, 32, 116, 116, 44, 32, 99, 111, 100,
    101, 44, 32, 107, 98, 100, 44, 32, 115, 97, 109, 112, 32, 123, 32, 102,
    111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, 111,
    115, 112, 97, 99, 101, 32, 125, 32, 112, 114, 101, 44, 32, 120, 109, 112,
    44, 32, 112, 108, 97, 105, 110, 116, 101, 120, 116, 44, 32, 108, 105, 115,
    116, 105, 110, 103, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32,
    98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105,
    108, 121, 58, 32, 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 119,
    104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59,
    32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32,
    48, 32, 125, 32, 109, 97, 114, 107, 32, 123, 32, 98, 97, 99, 107, 103,
    114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 121, 101, 108,
    108, 111, 119, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99,
    107, 32, 125, 32, 98, 105, 103, 32, 123, 32, 102, 111, 110, 116, 45, 115,
    105, 122, 101, 58, 32, 108, 97, 114, 103, 101, 114, 32, 125, 32, 115, 109,
    97, 108, 108, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58,
    32, 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 115, 44, 32, 115, 116,
    114, 105, 107, 101, 44, 32, 100, 101, 108, 32, 123, 32, 116, 101, 120, 116,
    45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 108, 105, 110,
    101, 45, 116, 104, 114, 111, 117, 103, 104, 32, 125, 32, 115, 117, 98, 32,
    123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110,
    58, 32, 115, 117, 98, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101,
    58, 32, 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 115, 117, 112, 32,
    123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110,
    58, 32, 115, 117, 112, 101, 114, 59, 32, 102, 111, 110, 116, 45, 115, 105,
    122, 101, 58, 32, 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 110, 111,
    98, 114, 32, 123, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101,
    58, 32, 110, 111, 119, 114, 97, 112, 32, 125, 32, 58, 102, 111, 99, 117,
    115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 97, 117, 116,
    111, 32, 53, 112, 120, 32, 45, 119, 101, 98, 107, 105, 116, 45, 102, 111,
    99, 117, 115, 45, 114, 105, 110, 103, 45, 99, 111, 108, 111, 114, 32, 125,
    32, 104, 116, 109, 108, 58, 102, 111, 99, 117, 115, 44, 32, 98, 111, 100,
    121, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 114,
    101, 97, 100, 111, 110, 108, 121, 93, 58, 102, 111, 99, 117, 115, 32, 123,
    32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, 111, 110, 101, 32, 125,
    32, 105, 110, 112, 117, 116, 58, 102, 111, 99, 117, 115, 44, 32, 116, 101,
    120, 116, 97, 114, 101, 97, 58, 102, 111, 99, 117, 115, 44, 32, 105, 115,
    105, 110, 100, 101, 120, 58, 102, 111, 99, 117, 115, 44, 32, 107, 101, 121,
    103, 101, 110, 58, 102, 111, 99, 117, 115, 44, 32, 115, 101, 108, 101, 99,
    116, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110,
    101, 45, 111, 102, 102, 115, 101, 116, 58, 32, 45, 50, 112, 120, 32, 125,
    32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116,
    116, 111, 110, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112,
    117, 116, 91, 116, 121, 112, 101, 61, 34, 99, 104, 101, 99, 107, 98, 111,
    120, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116,
    91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 102, 111,
    99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61,
    34, 104, 105, 100, 100, 101, 110, 34, 93, 58, 102, 111, 99, 117, 115, 44,
    32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 105, 109, 97,
    103, 101, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117,
    116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, 58,
    102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112,
    101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, 102, 111, 99, 117, 115,
    44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101,
    97, 114, 99, 104, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110,
    112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116,
    34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91,
    116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 102, 111, 99,
    117, 115, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101,
    45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 32, 123,
    32, 111, 117, 116, 108, 105, 110, 101, 45, 111, 102, 102, 115, 101, 116, 58,
    32, 48, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97,
    110, 121, 45, 108, 105, 110, 107, 32, 123, 32, 99, 111, 108, 111, 114, 58,
    32, 45, 119, 101, 98, 107, 105, 116, 45, 108, 105, 110, 107, 59, 32, 116,
    101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32,
    110, 111, 110, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117,
    116, 111, 59, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, 105, 116, 45,
    97, 110, 121, 45, 108, 105, 110, 107, 58, 97, 99, 116, 105, 118, 101, 32,
    123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, 107, 105, 116,
    45, 97, 99, 116, 105, 118, 101, 108, 105, 110, 107, 32, 125, 32, 114, 117,
    98, 121, 44, 32, 114, 116, 32, 123, 32, 116, 101, 120, 116, 45, 105, 110,
    100, 101, 110, 116, 58, 32, 48, 59, 32, 125, 32, 114, 116, 32, 123, 32,
    108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114,
    109, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120,
    116, 45, 101, 109, 112, 104, 97, 115, 105, 115, 58, 32, 110, 111, 110, 101,
    59, 32, 125, 32, 114, 117, 98, 121, 32, 62, 32, 114, 116, 32, 123, 32,
    100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32,
    102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 53, 48, 37, 59, 32,
    116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98,
    107, 105, 116, 45, 97, 117, 116, 111, 59, 32, 125, 32, 114, 117, 98, 121,
    32, 62, 32, 114, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58,
    32, 110, 111, 110, 101, 59, 32, 125, 32, 110, 111, 102, 114, 97, 109, 101,
    115, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110,
    101, 32, 125, 32, 102, 114, 97, 109, 101, 115, 101, 116, 44, 32, 102, 114,
    97, 109, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98,
    108, 111, 99, 107, 32, 125, 32, 102, 114, 97, 109, 101, 115, 101, 116, 32,
    123, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32,
    105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 105, 102, 114, 97, 109, 101,
    32, 123, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 105,
    110, 115, 101, 116, 32, 125, 32, 100, 101, 116, 97, 105, 108, 115, 32, 123,
    32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32,
    125, 32, 115, 117, 109, 109, 97, 114, 121, 32, 123, 32, 100, 105, 115, 112,
    108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 115, 117, 109,
    109, 97, 114, 121, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 100, 101,
    116, 97, 105, 108, 115, 45, 109, 97, 114, 107, 101, 114, 32, 123, 32, 100,
    105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98,
    108, 111, 99, 107, 59, 32, 119, 105, 100, 116, 104, 58, 32, 48, 46, 54,
    54, 101, 109, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 48, 46, 54,
    54, 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104,
    116, 58, 32, 48, 46, 52, 101, 109, 59, 32, 125, 32, 64, 112, 97, 103,
    101, 32, 123, 32, 115, 105, 122, 101, 58, 32, 97, 117, 116, 111, 59, 32,
    109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, 111, 59, 32, 112, 97,
    100, 100, 105, 110, 103, 58, 32, 48, 112, 120, 59, 32, 98, 111, 114, 100,
    101, 114, 45, 119, 105, 100, 116, 104, 58, 32, 48, 112, 120, 59, 32, 125
};
这样经过上面2个文件的转化就转化成为C++层次的数组,那么我们就可以在源代码中直接去使用了。

具体使用的过程:

CSSStyleSelector.cpp文件下面

static void loadFullDefaultStyle(UserAgentType type)
{
    if (simpleDefaultStyleSheet) {
        ASSERT(defaultStyle);
        delete defaultStyle;
        simpleDefaultStyleSheet->deref();
        defaultStyle = new RuleSet;
        simpleDefaultStyleSheet = 0;
    } else {
        ASSERT(!defaultStyle);
        defaultStyle = new RuleSet;
        defaultPrintStyle = new RuleSet;
        defaultQuirksStyle = new RuleSet;
    }

    // Strict-mode rules.
    String defaultRules ;
	if(type == DefaultUserAgent)
		defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet();
	else if (type == DvbUserAgent)
		defaultRules = String(guangxidvbUserAgentStyleSheet, sizeof(guangxidvbUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet();
	else if (type == VodUserAgent)
		defaultRules = String(guangxivodUserAgentStyleSheet, sizeof(guangxivodUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet();
	
    CSSStyleSheet* defaultSheet = parseUASheet(defaultRules);
    defaultStyle->addRulesFromSheet(defaultSheet, screenEval());
    defaultPrintStyle->addRulesFromSheet(defaultSheet, printEval());

    // Quirks-mode rules.
    String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraQuirksStyleSheet();
    CSSStyleSheet* quirksSheet = parseUASheet(quirksRules);
    defaultQuirksStyle->addRulesFromSheet(quirksSheet, screenEval());
}

调用
loadFullDefaultStyle
函数都是在
CSSStyleSelector文件里面,那么我们就可以通过设置setting的开关来完成相应版本的定制工作。


上面的介绍只是简单的思路。

希望对大家有所启发。



有什么问题可以直接发邮件[email protected]或者qq 390012381,大家一块学习,一块进步!




你可能感兴趣的:(Android webkit css样式定制)