Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android webkit css樣式定制

Android webkit css樣式定制

編輯:關於Android編程

 我們知道不同的浏覽器對css有不同的解析方式,在android webkit 上面默認的定制自己樣式的通道,假如我們對這個流程有一個比較清晰的了解,那麼我們也可以自己去do itself。

       首先介紹下android webkit的默認的css樣式表(聲明我都是基於android4.0.1講解),默認的css樣式位置在(android/external/webkit/Source/WebCore/css/html.css)


[html]  * 
 * 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 */ 

/*
 * 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中那?

按照我們猜測有可能是浏覽器啟動的時候直接加載進去,如同在頁面裡面直接加載使用

如同下面的例子:


[html] view plaincopyprint?<head> 
        <link rel="stylesheet" type="text/css" href="http://www.dreamdu.com/style.css" /> 
</head> 

<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)

我們看下裡面的腳本代碼:


[plain] view plaincopyprint?# 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 

# 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


[html] view plaincopyprint?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]; 

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的開關來完成相應版本的定制工作。


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved