<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>20389</bug_id>
          
          <creation_ts>2008-08-14 19:09:39 -0700</creation_ts>
          <short_desc>31 bit immediates FTW!</short_desc>
          <delta_ts>2008-08-15 03:43:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88521</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-08-14 19:09:39 -0700</bug_when>
    <thetext>Shuffle around the encoding of JSImmediate to allow it to hold 31 bit signed integer values.  This is hugely helpful to JavaScript programs that, um, use 31 bit signed integer values.

+2% on SunSpider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88522</commentid>
    <comment_count>1</comment_count>
      <attachid>22805</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-08-14 19:10:32 -0700</bug_when>
    <thetext>Created attachment 22805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88523</commentid>
    <comment_count>2</comment_count>
      <attachid>22806</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-08-14 19:12:50 -0700</bug_when>
    <thetext>Created attachment 22806
SunSpider Results (+2.3%, some runs are lower so I&apos;m just calling this +2%)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88524</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-14 19:21:57 -0700</bug_when>
    <thetext>I don&apos;t think that __INT_MAX__ is portable.  You should use either INT_MAX or std::numeric_limits&lt;int&gt;::max().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88525</commentid>
    <comment_count>4</comment_count>
      <attachid>22807</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-08-14 19:40:56 -0700</bug_when>
    <thetext>Created attachment 22807
Fix INT_MAX portability issue identified by bdash.

Also remove redundant parens (again ty bdash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88531</commentid>
    <comment_count>5</comment_count>
      <attachid>22810</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-08-14 20:19:09 -0700</bug_when>
    <thetext>Created attachment 22810
Replace a couple of magic constants (1 and 2) with their symbolic names.

Stop fiddling around Gavin and go to sleep.  Bah.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88532</commentid>
    <comment_count>6</comment_count>
      <attachid>22810</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-14 21:52:01 -0700</bug_when>
    <thetext>Comment on attachment 22810
Replace a couple of magic constants (1 and 2) with their symbolic names.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88541</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-08-15 03:43:29 -0700</bug_when>
    <thetext>Landed.

Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/kjs/JSImmediate.h
Transmitting file data ..
Committed revision 35778.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22805</attachid>
            <date>2008-08-14 19:10:32 -0700</date>
            <delta_ts>2008-08-14 19:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch_31bit.e.txt</filename>
            <type>text/plain</type>
            <size>18578</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCShyZXZpc2lvbiAzNTYzOSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw1MiArNDAs
OTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICAvKgogICAgICAqIEEgSlNWYWx1ZSogIGlzIGVp
dGhlciBhIHBvaW50ZXIgdG8gYSBjZWxsIChhIGhlYXAtYWxsb2NhdGVkIG9iamVjdCkgb3IgYW4g
aW1tZWRpYXRlIChhIHR5cGUtdGFnZ2VkIAotICAgICAqIHNpZ25lZCBpbnQgbWFzcXVlcmFkaW5n
IGFzIGEgcG9pbnRlcikuIFRoZSBsb3cgdHdvIGJpdHMgaW4gYSBKU1ZhbHVlKiBhcmUgYXZhaWxh
YmxlIAotICAgICAqIGZvciB0eXBlIHRhZ2dpbmcgYmVjYXVzZSBhbGxvY2F0b3IgYWxpZ25tZW50
IGd1YXJhbnRlZXMgdGhleSB3aWxsIGJlIDAwIGluIGNlbGwgcG9pbnRlcnMuCisgICAgICogdmFs
dWUgbWFzcXVlcmFkaW5nIGFzIGEgcG9pbnRlcikuIFRoZSBsb3cgdHdvIGJpdHMgaW4gYSBKU1Zh
bHVlKiBhcmUgYXZhaWxhYmxlIGZvciB0eXBlIHRhZ2dpbmcKKyAgICAgKiBiZWNhdXNlIGFsbG9j
YXRvciBhbGlnbm1lbnQgZ3VhcmFudGVlcyB0aGV5IHdpbGwgYmUgMDAgaW4gY2VsbCBwb2ludGVy
cy4KICAgICAgKgogICAgICAqIEZvciBleGFtcGxlLCBvbiBhIDMyIGJpdCBzeXN0ZW06CiAgICAg
ICoKLSAgICAgKiBKU0NlbGwqOiAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgg
ICAgICAgICAgICAgICAgIDAwCi0gICAgICogICAgICAgICAgICAgICBbIGhpZ2ggMzAgYml0czog
cG9pbnRlciBhZGRyZXNzIF0gIFsgbG93IDIgYml0cyAtLSBhbHdheXMgMCBdCisgICAgICogSlND
ZWxsKjogICAgICAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYICAgICAgICAg
ICAgICAgICAgICAgMDAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBbIGhpZ2ggMzAgYml0
czogcG9pbnRlciBhZGRyZXNzIF0gIFsgbG93IDIgYml0cyAtLSBhbHdheXMgMCBdCisgICAgICog
SlNJbW1lZGlhdGU6ICAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYICAgICAg
ICAgICAgICAgICAgICAgVFQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBbIGhpZ2ggMzAg
Yml0czogJ3BheWxvYWQnIF0gICAgICAgICAgICAgWyBsb3cgMiBiaXRzIC0tIHRhZyBdCiAgICAg
ICoKLSAgICAgKiBKU0ltbWVkaWF0ZTogICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgg
ICAgICAgICAgICAgICAgIFRUCi0gICAgICogICAgICAgICAgICAgICBbIGhpZ2ggMzAgYml0czog
c2lnbmVkIGludCBdICAgICAgIFsgbG93IDIgYml0cyAtLSB0eXBlIHRhZyBdCisgICAgICogV2hl
cmUgdGhlIGJvdHRvbSB0d28gYml0cyBhcmUgbm9uLXplcm8gdGhleSBlaXRoZXIgaW5kaWNhdGUg
dGhhdCB0aGUgaW1tZWRpYXRlIGlzIGEgMzEgYml0IHNpZ25lZAorICAgICAqIGludGVnZXIsIG9y
IHRoZXkgbWFyayB0aGUgdmFsdWUgYXMgYmVpbmcgYW4gaW1tZWRpYXRlIG9mIGEgdHlwZSBvdGhl
ciB0aGFuIGludGVnZXIsIHdpdGggYSBzZWNvbmRhcnkKKyAgICAgKiB0YWcgdXNlZCB0byBpbmRp
Y2F0ZSB0aGUgZXhhY3QgdHlwZS4KICAgICAgKgotICAgICAqIFRoZSBiaXQgInBheWxvYWQiICh0
aGUgaGlnaCAzMCBiaXRzKSBpcyBhIDMwIGJpdCBzaWduZWQgaW50IGZvciBpbW1lZGlhdGUgbnVt
YmVycywgYSBmbGFnIHRvIGRpc3Rpbmd1aXNoIHRydWUvZmFsc2UKLSAgICAgKiBhbmQgdW5kZWZp
bmVkL251bGwuCisgICAgICogV2hlcmUgdGhlIGxvd2VzdCBiaXQgaXMgc2V0IChUVCBpcyBlcXVh
bCB0byAwMSBvciAxMSkgdGhlIGhpZ2ggMzEgYml0cyBmb3JtIGEgMzEgYml0IHNpZ25lZCBpbnQg
dmFsdWUuCisgICAgICogV2hlcmUgVFQgaXMgZXF1YWwgdG8gMTAgdGhpcyBpbmRpY2F0ZXMgdGhp
cyBpcyBhIHR5cGUgb2YgaW1tZWRpYXRlIG90aGVyIHRoYW4gYW4gaW50ZWdlciwgYW5kIHRoZSBu
ZXh0CisgICAgICogdHdvIGJpdHMgd2lsbCBmb3JtIGFuIGV4dGVuZGVkIHRhZy4KICAgICAgKgot
ICAgICAqIE5vdGljZSB0aGF0IHRoZSBKU1R5cGUgdmFsdWUgb2YgTnVsbFR5cGUgaXMgNCwgd2hp
Y2ggcmVxdWlyZXMgMyBiaXRzIHRvIGVuY29kZS4gU2luY2Ugd2Ugb25seSBoYXZlIDIgYml0cyAK
LSAgICAgKiBhdmFpbGFibGUgZm9yIHR5cGUgdGFnZ2luZywgd2UgdGFnIHRoZSBudWxsIGltbWVk
aWF0ZSB3aXRoIFVuZGVmaW5lZFR5cGUsIGFuZCBKU0ltbWVkaWF0ZTo6dHlwZSgpIGhhcyAKLSAg
ICAgKiB0byBzb3J0IHRoZW0gb3V0LgorICAgICAqIDMxIGJpdCBzaWduZWQgaW50OiAgIFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCAgICAgICAgICAgICAgICAgICAgIFgxCisgICAgICog
ICAgICAgICAgICAgICAgICAgICAgWyBoaWdoIDMwIGJpdHMgb2YgdGhlIHZhbHVlIF0gICAgICBb
IGhpZ2ggYml0IHBhcnQgb2YgdmFsdWUgXQorICAgICAqIE90aGVyOiAgICAgICAgICAgICAgIFlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVkgICAgICBaWiAgICAgICAgICAgICAgIDEwCisgICAg
ICogICAgICAgICAgICAgICAgICAgICAgWyBleHRlbmRlZCAncGF5bG9hZCcgXSAgWyAgZXh0ZW5k
ZWQgdGFnICBdICBbICB0YWcgJ290aGVyJyAgXQorICAgICAqCisgICAgICogV2hlcmUgdGhlIGZp
cnN0IGJpdCBvZiB0aGUgZXh0ZW5kZWQgdGFnIGlzIHNldCB0aGlzIGZsYWdzIHRoZSB2YWx1ZSBh
cyBiZWluZyBhIGJvb2xlYW4sIGFuZCB0aGUgZm9sbG93aW5nCisgICAgICogYml0IHdvdWxkIGZs
YWcgdGhlIHZhbHVlIGFzIHVuZGVmaW5lZC4gIElmIG5laXRoZXIgYml0cyBhcmUgc2V0LCB0aGUg
dmFsdWUgaXMgbnVsbC4KKyAgICAgKgorICAgICAqIE90aGVyOiAgICAgICAgICAgICAgIFlZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVkgICAgICBVQiAgICAgICAgICAgICAgIDEwCisgICAgICog
ICAgICAgICAgICAgICAgICAgICAgWyBleHRlbmRlZCAncGF5bG9hZCcgXSAgWyB1bmRlZmluZWQg
fCBib29sIF0gIFsgdGFnICdvdGhlcicgXQorICAgICAqCisgICAgICogRm9yIGJvb2xlYW4gdmFs
dWUgdGhlIGxvd2VzdCBiaXQgaW4gdGhlIHBheWxvYWQgaG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBi
b29sLCBhbGwgcmVtYWluaW5nIGJpdHMgYXJlIHplcm8uCisgICAgICogRm9yIHVuZGVmaW5lZCBv
ciBudWxsIGltbWVkaWF0ZXMgdGhlIHBheWxvYWQgaXMgemVyby4KKyAgICAgKgorICAgICAqIEJv
b2xlYW46ICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFYgICAgICAwMSAg
ICAgICAgICAgICAgIDEwCisgICAgICogICAgICAgICAgICAgICAgICAgICAgWyBib29sZWFuIHZh
bHVlIF0gICAgICAgICAgICAgIFsgYm9vbCBdICAgICAgIFsgdGFnICdvdGhlcicgXQorICAgICAq
IFVuZGVmaW5lZDogICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgICAgICAx
MCAgICAgICAgICAgICAgIDEwCisgICAgICogICAgICAgICAgICAgICAgICAgICAgWyB6ZXJvIF0g
ICAgICAgICAgICAgICAgICAgIFsgdW5kZWZpbmVkIF0gICAgIFsgdGFnICdvdGhlcicgXQorICAg
ICAqIE51bGw6ICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgICAg
ICAwMCAgICAgICAgICAgICAgIDEwCisgICAgICogICAgICAgICAgICAgICAgICAgICAgWyB6ZXJv
IF0gICAgICAgICAgICAgICAgICAgICAgIFsgemVybyBdICAgICAgIFsgdGFnICdvdGhlcicgXQog
ICAgICAqLwogCiAgICAgY2xhc3MgSlNJbW1lZGlhdGUgeworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludHB0cl90IFRhZ01hc2sgICAgICAgICAgID0gMHgzdTsgLy8gcHJpbWFyeSB0YWcgaXMgMiBi
aXRzIGxvbmcKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBUYWdCaXRUeXBlSW50ZWdl
ciA9IDB4MXU7IC8vIGJvdHRvbSBiaXQgc2V0IGluZGljYXRlcyBpbnQsIHRoaXMgZG9taW5hdGVz
IHRoZSBmb2xsb3dpbmcgYml0CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgVGFnQml0
VHlwZU90aGVyICAgPSAweDJ1OyAvLyBzZWNvbmQgYml0IHNldCBpbmRpY2F0ZXMgaW1tZWRpYXRl
IG90aGVyIHRoYW4gYW4gaW50ZWdlcgorCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3Qg
RXh0ZW5kZWRUYWdNYXNrICAgICAgICAgPSAweEN1OyAvLyBleHRlbmRlZCB0YWcgaG9sZHMgYSBm
dXJ0aGVyIHR3byBiaXRzCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRXh0ZW5kZWRU
YWdCaXRCb29sICAgICAgPSAweDR1OworICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IEV4
dGVuZGVkVGFnQml0VW5kZWZpbmVkID0gMHg4dTsKKworICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dHB0cl90IEZ1bGxUYWdUeXBlTWFzayAgICAgID0gVGFnTWFzayB8IEV4dGVuZGVkVGFnTWFzazsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBGdWxsVGFnVHlwZUJvb2wgICAgICA9IFRh
Z0JpdFR5cGVPdGhlciB8IEV4dGVuZGVkVGFnQml0Qm9vbDsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVpbnRwdHJfdCBGdWxsVGFnVHlwZVVuZGVmaW5lZCA9IFRhZ0JpdFR5cGVPdGhlciB8IEV4dGVu
ZGVkVGFnQml0VW5kZWZpbmVkOworICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IEZ1bGxU
YWdUeXBlTnVsbCAgICAgID0gVGFnQml0VHlwZU90aGVyOworCisgICAgICAgIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBJbnRlZ2VyUGF5bG9hZFNoaWZ0ICA9IDF1OworICAgICAgICBzdGF0aWMgY29u
c3QgdWludDMyX3QgRXh0ZW5kZWRQYXlsb2FkU2hpZnQgPSA0dTsKKworICAgICAgICBzdGF0aWMg
Y29uc3QgdWludHB0cl90IEV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1ZSA9IDEgPDwgRXh0ZW5k
ZWRQYXlsb2FkU2hpZnQ7CisgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBib29sIGlzSW1tZWRpYXRlKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBnZXRUYWcodikgIT0gMDsKKyAgICAgICAgICAgIHJldHVybiAocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgVGFnTWFzayk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1iZXIoY29uc3QgSlNWYWx1
ZSogdikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChnZXRUYWcodikgPT0gTnVtYmVy
VHlwZSk7CisgICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2
KSAmIFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNQb3NpdGl2ZU51bWJlcihjb25zdCBKU1ZhbHVlKiB2KQogICAgICAg
ICB7CiAgICAgICAgICAgICAvLyBBIHNpbmdsZSBtYXNrIHRvIGNoZWNrIGZvciB0aGUgc2lnbiBi
aXQgYW5kIHRoZSBudW1iZXIgdGFnIGFsbCBhdCBvbmNlLgotICAgICAgICAgICAgcmV0dXJuIChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiAoMHg4MDAwMDAwMCB8IE51bWJlclR5cGUp
KSA9PSBOdW1iZXJUeXBlOworICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4odikgJiAoMHg4MDAwMDAwMCB8IFRhZ0JpdFR5cGVJbnRlZ2VyKSkgPT0gVGFnQml0
VHlwZUludGVnZXI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNCb29sZWFuKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAoZ2V0VGFnKHYpID09IEJvb2xlYW5UeXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIEZ1bGxUYWdUeXBlTWFzaykg
PT0gRnVsbFRhZ1R5cGVCb29sKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgLy8gU2lu
Y2Ugd2UgaGF2ZSByb29tIGZvciBvbmx5IDMgdW5pcXVlIHRhZ3MsIG51bGwgYW5kIHVuZGVmaW5l
ZCBoYXZlIHRvIHNoYXJlLgogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVW5k
ZWZpbmVkT3JOdWxsKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAoZ2V0VGFnKHYpID09IFVuZGVmaW5lZFR5cGUpOworICAgICAgICAgICAgLy8gVW5kZWZp
bmVkIGFuZCBudWxsIHNoYXJlIHRoZSBzYW1lIHZhbHVlLCBiYXIgdGhlICd1bmRlZmluZWQnIGJp
dCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgorICAgICAgICAgICAgcmV0dXJuICgocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHYpICYgfkV4dGVuZGVkVGFnQml0VW5kZWZpbmVkKSA9PSBGdWxsVGFn
VHlwZU51bGwpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNOZWdhdGl2ZShj
b25zdCBKU1ZhbHVlKiB2KQpAQCAtMTA5LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAg
ICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgYXJlQm90aEltbWVkaWF0ZU51bWJlcnMo
Y29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0IEpTVmFsdWUqIHYyKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgJiByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odjIpICYgVGFnTWFzaykgPT0gTnVtYmVyVHlwZTsKKyAgICAgICAg
ICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgJiByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odjIpICYgVGFnQml0VHlwZUludGVnZXIpOwogICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogYW5kSW1tZWRpYXRlTnVtYmVy
cyhjb25zdCBKU1ZhbHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCkBAIC0xMjEsNyArMTYwLDcg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUq
IHhvckltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0IEpTVmFsdWUqIHYy
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoYXJlQm90aEltbWVkaWF0ZU51bWJlcnMo
djEsIHYyKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGFnKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2MSkgXiByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjIpLCBOdW1iZXJUeXBlKTsK
KyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSBeIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2Mikp
IHwgVGFnQml0VHlwZUludGVnZXIpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSogb3JJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBj
b25zdCBKU1ZhbHVlKiB2MikKQEAgLTEzMyw0MCArMTcyLDQwIEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiByaWdodFNoaWZ0SW1tZWRpYXRl
TnVtYmVycyhjb25zdCBKU1ZhbHVlKiB2YWwsIGNvbnN0IEpTVmFsdWUqIHNoaWZ0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoYXJlQm90aEltbWVkaWF0ZU51bWJlcnModmFsLCBzaGlm
dCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KChyZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pih2YWwpID4+ICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHNoaWZ0KSA+PiAyKSAmIDB4MWYpKSB8IE51bWJlclR5cGUpOworICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KChyZWludGVycHJldF9jYXN0PGludHB0cl90
Pih2YWwpID4+ICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNoaWZ0KSA+PiAxKSAmIDB4
MWYpKSB8IFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIGJvb2wgY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25zKGNvbnN0IEpTVmFs
dWUqIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE51bWJlciBpcyBub24tbmVnYXRpdmUg
YW5kIGFuIG9wZXJhdGlvbiBpbnZvbHZpbmcgdHdvIG9mIHRoZXNlIGNhbid0IG92ZXJmbG93Lgog
ICAgICAgICAgICAgLy8gQ2hlY2tpbmcgZm9yIGFsbG93ZWQgbmVnYXRpdmUgbnVtYmVycyB0YWtl
cyBtb3JlIHRpbWUgdGhhbiBpdCdzIHdvcnRoIG9uIFN1blNwaWRlci4KLSAgICAgICAgICAgIHJl
dHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKE51bWJlclR5cGUgKyAoMyA8
PCAzMCkpKSA9PSBOdW1iZXJUeXBlOworICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odikgJiAoVGFnQml0VHlwZUludGVnZXIgKyAoMyA8PCAzMCkpKSA9PSBU
YWdCaXRUeXBlSW50ZWdlcjsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIGFkZEltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0
IEpTVmFsdWUqIHYyKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRk
aXRpdmVPcGVyYXRpb25zKHYxKSk7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRp
dmVPcGVyYXRpb25zKHYyKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxK
U1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSArIChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odjIpICYgfk51bWJlclR5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEp
ICsgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAtIFRhZ0JpdFR5cGVJbnRlZ2VyKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIHN1Yklt
bWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0IEpTVmFsdWUqIHYyKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25zKHYx
KSk7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25zKHYyKSk7
Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSAtIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjIp
ICYgfk51bWJlclR5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpT
VmFsdWUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpIC0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHYyKSArIFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIGluY0ltbWVkaWF0ZU51bWJlcihjb25z
dCBKU1ZhbHVlKiB2KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRk
aXRpdmVPcGVyYXRpb25zKHYpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEpTVmFsdWUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgKyBUYWdNYXNrICsgMSk7
CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYpICsgMik7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlKiBkZWNJbW1lZGlhdGVOdW1iZXIoY29uc3QgSlNWYWx1ZSog
dikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0
aW9ucyh2KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4o
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpIC0gKFRhZ01hc2sgKyAxKSk7CisgICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHYpIC0gMik7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgZG91YmxlIHRv
RG91YmxlKGNvbnN0IEpTVmFsdWUqKTsKQEAgLTE5MiwxMTUgKzIzMSwxNDAgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogcHJvdG90eXBlKGNvbnN0IEpTVmFsdWUq
LCBFeGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50
cHRyX3QgVGFnTWFzayA9IDM7IC8vIHR5cGUgdGFncyBhcmUgMiBiaXRzIGxvbmcKLQogICAgICAg
ICAvLyBJbW1lZGlhdGUgdmFsdWVzIGFyZSByZXN0cmljdGVkIHRvIGEgMzAgYml0IHNpZ25lZCB2
YWx1ZS4KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5JbW1lZGlhdGVJbnQgPSAtKDEgPDwg
MjkpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heEltbWVkaWF0ZUludCA9ICgxIDw8IDI5
KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluSW1tZWRpYXRlSW50ID0gKCgtX19J
TlRfTUFYX18pIC0gMSkgPj4gSW50ZWdlclBheWxvYWRTaGlmdDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBtYXhJbW1lZGlhdGVJbnQgPSBfX0lOVF9NQVhfXyA+PiBJbnRlZ2VyUGF5bG9hZFNo
aWZ0OwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4SW1tZWRpYXRlVUludCA9IG1h
eEltbWVkaWF0ZUludDsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUqIHRhZyh1aW50cHRyX3QgYml0cywgdWludHB0cl90IHRhZykKKyAgICAgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogbWFrZUludChpbnQzMl90IHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oKHZhbHVlIDw8
IEludGVnZXJQYXlsb2FkU2hpZnQpIHwgVGFnQml0VHlwZUludGVnZXIpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBtYWtlQm9vbChi
b29sIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpT
VmFsdWUqPigoc3RhdGljX2Nhc3Q8dWludHB0cl90PihiKSA8PCBFeHRlbmRlZFBheWxvYWRTaGlm
dCkgfCBGdWxsVGFnVHlwZUJvb2wpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBtYWtlVW5kZWZpbmVkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KEZ1bGxUYWdUeXBlVW5k
ZWZpbmVkKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSogbWFrZU51bGwoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oRnVsbFRhZ1R5cGVOdWxsKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50MzJfdCBpbnRWYWx1ZShjb25z
dCBKU1ZhbHVlKiB2KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxpbnQzMl90Pih2KSA+PiAxOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSB1aW50MzJfdCB1aW50VmFsdWUoY29uc3QgSlNWYWx1ZSogdikKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGJp
dHMgfCB0YWcpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+
KHYpID4+IDE7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHVpbnRwdHJfdCB1blRhZyhjb25zdCBKU1ZhbHVlKiB2KQorICAgICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGJvb2xWYWx1ZShjb25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgflRhZ01h
c2s7CisgICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHYpICYg
RXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZhbHVlKSAhPSAwOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB1aW50cHRyX3QgZ2V0VGFnKGNvbnN0IEpTVmFs
dWUqIHYpCisgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVpbnRwdHJfdCByYXdWYWx1ZShj
b25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgVGFnTWFzazsKKyAgICAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odik7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6dHJ1ZUltbWVkaWF0ZSgpIHsgcmV0dXJu
IHRhZygxIDw8IDIsIEJvb2xlYW5UeXBlKTsgfQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSog
SlNJbW1lZGlhdGU6OmZhbHNlSW1tZWRpYXRlKCkgeyByZXR1cm4gdGFnKDAsIEJvb2xlYW5UeXBl
KTsgfQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OnVuZGVmaW5lZElt
bWVkaWF0ZSgpIHsgcmV0dXJuIHRhZygxIDw8IDIsIFVuZGVmaW5lZFR5cGUpOyB9Ci0gICAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6bnVsbEltbWVkaWF0ZSgpIHsgcmV0dXJu
IHRhZygwLCBVbmRlZmluZWRUeXBlKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJ
bW1lZGlhdGU6OnRydWVJbW1lZGlhdGUoKSB7IHJldHVybiBtYWtlQm9vbCh0cnVlKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZhbHNlSW1tZWRpYXRlKCkgeyBy
ZXR1cm4gbWFrZUJvb2woZmFsc2UpOyB9CisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0lt
bWVkaWF0ZTo6dW5kZWZpbmVkSW1tZWRpYXRlKCkgeyByZXR1cm4gbWFrZVVuZGVmaW5lZCgpOyB9
CisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6bnVsbEltbWVkaWF0ZSgp
IHsgcmV0dXJuIG1ha2VOdWxsKCk7IH0KIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgaW1wb3NzaWJs
ZSBiZWNhdXNlIDB4NCBpcyBub3QgYSB2YWxpZCBwb2ludGVyIGJ1dCBhIHRhZyBvZiAwIHdvdWxk
IGluZGljYXRlIG5vbi1pbW1lZGlhdGUKLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1t
ZWRpYXRlOjppbXBvc3NpYmxlVmFsdWUoKSB7IHJldHVybiB0YWcoMSA8PCAyLCAwKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmltcG9zc2libGVWYWx1ZSgpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KDB4NCk7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBKU0ltbWVkaWF0ZTo6dG9Cb29sZWFuKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNJbW1lZGlhdGUodikpOwotICAgICAgICB1aW50cHRyX3QgYml0
cyA9IHVuVGFnKHYpOwotICAgICAgICByZXR1cm4gKGJpdHMgIT0gMCkgJiAoSlNJbW1lZGlhdGU6
OmdldFRhZyh2KSAhPSBVbmRlZmluZWRUeXBlKTsKKyAgICAgICAgdWludHB0cl90IGJpdHMgPSBy
YXdWYWx1ZSh2KTsKKyAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAoYml0cyAmIFRhZ0JpdFR5
cGVJbnRlZ2VyKSA/IChiaXRzICE9IFRhZ0JpdFR5cGVJbnRlZ2VyKSA6IC8vICEwIGludHMKKyAg
ICAgICAgICAgIChiaXRzID09IChGdWxsVGFnVHlwZUJvb2wgfCBFeHRlbmRlZFBheWxvYWRCaXRC
b29sVmFsdWUpKTsgLy8gYm9vbCB0cnVlCiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB1aW50
MzJfdCBKU0ltbWVkaWF0ZTo6dG9UcnVuY2F0ZWRVSW50MzIoY29uc3QgSlNWYWx1ZSogdikKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChpc0ltbWVkaWF0ZSh2KSk7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odikgPj4gMik7Cisg
ICAgICAgIEFTU0VSVChpc051bWJlcih2KSk7CisgICAgICAgIHJldHVybiBpbnRWYWx1ZSh2KTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGNo
YXIgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShzaWduZWQgY2hhciBpKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChpKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHVu
c2lnbmVkIGNoYXIgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJU
eXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShzaG9ydCBpKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChp
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9t
KHVuc2lnbmVkIHNob3J0IGkpCiAgICAgewotICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVt
YmVyVHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KGkpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20oaW50IGkpCiAgICAgewogICAgICAg
ICBpZiAoKGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkgPiBtYXhJbW1lZGlhdGVJbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25lZCBpKQogICAgIHsKICAgICAgICAg
aWYgKGkgPiBtYXhJbW1lZGlhdGVVSW50KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQo
aSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJv
bShsb25nIGkpCiAgICAgewogICAgICAgICBpZiAoKGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkg
PiBtYXhJbW1lZGlhdGVJbnQpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNp
Z25lZCBsb25nIGkpCiAgICAgewogICAgICAgICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5
cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGxvbmcgbG9uZyBpKQogICAgIHsKICAgICAg
ICAgaWYgKChpIDwgbWluSW1tZWRpYXRlSW50KSB8IChpID4gbWF4SW1tZWRpYXRlSW50KSkKICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gdGFnKHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oaSkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSogSlNJbW1lZGlhdGU6OmZyb20odW5zaWduZWQgbG9uZyBsb25nIGkpCiAgICAgewogICAgICAg
ICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgcmV0dXJuIHRhZyhzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpIDw8IDIsIE51bWJlclR5cGUp
OworICAgICAgICByZXR1cm4gbWFrZUludChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAg
ICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGRvdWJs
ZSBkKQpAQCAtMzE0LDMzICszNzgsMzYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGlmICgo
aW50VmFsICE9IGQpIHx8ICghaW50VmFsICYmIHNpZ25iaXQoZCkpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICAgICAgcmV0dXJuIHRhZyhpbnRWYWwgPDwgMiwgTnVtYmVyVHlwZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlSW50KGludFZhbCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBpbnQzMl90IEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMihjb25zdCBKU1ZhbHVlKiB2
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTnVtYmVyKHYpKTsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDMyX3Q+KHVuVGFnKHYpKSA+PiAyOworICAgICAgICByZXR1cm4gaW50VmFs
dWUodik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNJbW1lZGlhdGU6OnRv
RG91YmxlKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNJbW1lZGlh
dGUodikpOwotICAgICAgICBjb25zdCBpbnQzMl90IGkgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih1
blRhZyh2KSkgPj4gMjsKLSAgICAgICAgaWYgKEpTSW1tZWRpYXRlOjpnZXRUYWcodikgPT0gVW5k
ZWZpbmVkVHlwZSAmJiBpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgICAgIHJldHVybiBpOworICAgICAgICBpZiAoaXNO
dW1iZXIodikpCisgICAgICAgICAgICByZXR1cm4gaW50VmFsdWUodik7CisgICAgICAgIGlmIChy
YXdWYWx1ZSh2KSA9PSAoRnVsbFRhZ1R5cGVCb29sIHwgRXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZh
bHVlKSkKKyAgICAgICAgICAgIHJldHVybiAxLjA7CisgICAgICAgIGlmIChyYXdWYWx1ZSh2KSAh
PSAoRnVsbFRhZ1R5cGVVbmRlZmluZWQpKQorICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIEpTSW1tZWRpYXRlOjpnZXRVSW50MzIoY29uc3Qg
SlNWYWx1ZSogdiwgdWludDMyX3QmIGkpCiAgICAgewotICAgICAgICBpID0gc3RhdGljX2Nhc3Q8
dWludHB0cl90Pih1blRhZyh2KSkgPj4gMjsKKyAgICAgICAgaSA9IHVpbnRWYWx1ZSh2KTsKICAg
ICAgICAgcmV0dXJuIGlzUG9zaXRpdmVOdW1iZXIodik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSBib29sIEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMihjb25zdCBKU1ZhbHVlKiB2
LCBpbnQzMl90JiBpKQogICAgIHsKLSAgICAgICAgaSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHVu
VGFnKHYpKSA+PiAyOworICAgICAgICBpID0gaW50VmFsdWUodik7CiAgICAgICAgIHJldHVybiBp
c051bWJlcih2KTsKICAgICB9CiAKQEAgLTM1MywxMCArNDIwLDEzIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSW1tZWRpYXRlKHYpKTsKICAgICAgICAgCi0gICAg
ICAgIHVpbnRwdHJfdCB0YWcgPSBnZXRUYWcodik7Ci0gICAgICAgIGlmICh0YWcgPT0gVW5kZWZp
bmVkVHlwZSkKLSAgICAgICAgICAgIHJldHVybiB2ID09IHVuZGVmaW5lZEltbWVkaWF0ZSgpID8g
VW5kZWZpbmVkVHlwZSA6IE51bGxUeXBlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNU
eXBlPih0YWcpOworICAgICAgICBpZiAoaXNOdW1iZXIodikpCisgICAgICAgICAgICByZXR1cm4g
TnVtYmVyVHlwZTsKKyAgICAgICAgaWYgKGlzQm9vbGVhbih2KSkKKyAgICAgICAgICAgIHJldHVy
biBCb29sZWFuVHlwZTsKKyAgICAgICAgaWYgKHYgIT0gdW5kZWZpbmVkSW1tZWRpYXRlKCkpCisg
ICAgICAgICAgICByZXR1cm4gTnVsbFR5cGU7CisgICAgICAgIHJldHVybiBVbmRlZmluZWRUeXBl
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSoganNVbmRlZmluZWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22806</attachid>
            <date>2008-08-14 19:12:50 -0700</date>
            <delta_ts>2008-08-14 19:12:50 -0700</delta_ts>
            <desc>SunSpider Results (+2.3%, some runs are lower so I&apos;m just calling this +2%)</desc>
            <filename>patch_31bit.e.results.txt</filename>
            <type>text/plain</type>
            <size>5684</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">PT09IEJVSUxESU5HIEFHR1JFR0FURSBUQVJHRVQgRGVyaXZlZCBTb3VyY2VzIE9GIFBST0pFQ1Qg
SmF2YVNjcmlwdENvcmUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09CgpDaGVja2luZyBE
ZXBlbmRlbmNpZXMuLi4KClBoYXNlU2NyaXB0RXhlY3V0aW9uICIvVXNlcnMvZ2F2aW4vRGVza3Rv
cC9MaW9uL1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0Rl
cml2ZWQgU291cmNlcy5idWlsZC9TY3JpcHQtNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCLnNoIgog
ICAgY2QgL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQvSmF2YVNjcmlwdENvcmUKICAg
IC9iaW4vc2ggLWMgIlwiL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVp
bGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9EZXJpdmVkIFNvdXJjZXMuYnVpbGQvU2Ny
aXB0LTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQi5zaFwiIgptYWtlOiBOb3RoaW5nIHRvIGJlIGRv
bmUgZm9yIGBhbGwnLgoKUGhhc2VTY3JpcHRFeGVjdXRpb24gIi9Vc2Vycy9nYXZpbi9EZXNrdG9w
L0xpb24vV2ViS2l0L1dlYktpdEJ1aWxkL0phdmFTY3JpcHRDb3JlLmJ1aWxkL1JlbGVhc2UvRGVy
aXZlZCBTb3VyY2VzLmJ1aWxkL1NjcmlwdC01RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIuc2giCiAg
ICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9MaW9uL1dlYktpdC9KYXZhU2NyaXB0Q29yZQogICAg
L2Jpbi9zaCAtYyAiXCIvVXNlcnMvZ2F2aW4vRGVza3RvcC9MaW9uL1dlYktpdC9XZWJLaXRCdWls
ZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0Rlcml2ZWQgU291cmNlcy5idWlsZC9TY3Jp
cHQtNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyLnNoXCIiCgoKPT09IEJVSUxESU5HIE5BVElWRSBU
QVJHRVQgSmF2YVNjcmlwdENvcmUgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENPTkZJ
R1VSQVRJT04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4uLgoKUGhhc2VTY3Jp
cHRFeGVjdXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVpbGQv
SmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9KYXZhU2NyaXB0Q29yZS5idWlsZC9TY3JpcHQt
OTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0LnNoCiAgICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9M
aW9uL1dlYktpdC9KYXZhU2NyaXB0Q29yZQogICAgL2Jpbi9zaCAtYyAvVXNlcnMvZ2F2aW4vRGVz
a3RvcC9MaW9uL1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNl
L0phdmFTY3JpcHRDb3JlLmJ1aWxkL1NjcmlwdC05MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQuc2gK
Cgo9PT0gQlVJTERJTkcgTkFUSVZFIFRBUkdFVCBqc2MgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29y
ZSBXSVRIIENPTkZJR1VSQVRJT04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4u
LgoKUGhhc2VTY3JpcHRFeGVjdXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQv
V2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9qc2MuYnVpbGQvU2NyaXB0
LTVENUQ4QUJGMEUwRDBCMDMwMEY5QzY5Mi5zaAogICAgY2QgL1VzZXJzL2dhdmluL0Rlc2t0b3Av
TGlvbi9XZWJLaXQvSmF2YVNjcmlwdENvcmUKICAgIC9iaW4vc2ggLWMgL1VzZXJzL2dhdmluL0Rl
c2t0b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFz
ZS9qc2MuYnVpbGQvU2NyaXB0LTVENUQ4QUJGMEUwRDBCMDMwMEY5QzY5Mi5zaAoqKiBCVUlMRCBT
VUNDRUVERUQgKioKU3RhcnRpbmcgc3Vuc3BpZGVyLWNvbXBhcmUtcmVzdWx0cyB3aXRoIERZTERf
RlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IEphdmFTY3JpcHRDb3JlIGluIC9V
c2Vycy9nYXZpbi9EZXNrdG9wL0xpb24vV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UuCgoKVEVT
VCAgICAgICAgICAgICAgICAgICBDT01QQVJJU09OICAgICAgICAgICAgRlJPTSAgICAgICAgICAg
ICAgICAgVE8gICAgICAgICAgICAgREVUQUlMUwoKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqIFRP
VEFMICoqOiAgICAgICAgICAgMS4wMjN4IGFzIGZhc3QgICAgMTU0OS4wbXMgKy8tIDAuMiUgICAx
NTEzLjdtcyArLy0gMC4xJSAgICAgc2lnbmlmaWNhbnQKCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgog
IDNkOiAgICAgICAgICAgICAgICAgIDEuMDA5eCBhcyBmYXN0ICAgICAxOTkuNG1zICsvLSAwLjMl
ICAgIDE5Ny42bXMgKy8tIDAuMyUgICAgIHNpZ25pZmljYW50CiAgICBjdWJlOiAgICAgICAgICAg
ICAgPz8gICAgICAgICAgICAgICAgICA1OS44bXMgKy8tIDAuNSUgICAgIDYwLjBtcyArLy0gMC4w
JSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwM3ggYXMgc2xvdyoKICAgIG1vcnBo
OiAgICAgICAgICAgICAqMS4wMTZ4IGFzIHNsb3cqICAgIDcwLjNtcyArLy0gMC41JSAgICAgNzEu
NG1zICsvLSAwLjUlICAgICBzaWduaWZpY2FudAogICAgcmF5dHJhY2U6ICAgICAgICAgIDEuMDQ3
eCBhcyBmYXN0ICAgICAgNjkuM21zICsvLSAwLjUlICAgICA2Ni4ybXMgKy8tIDAuNSUgICAgIHNp
Z25pZmljYW50CgogIGFjY2VzczogICAgICAgICAgICAgIDEuMDQ0eCBhcyBmYXN0ICAgICAyMDQu
NG1zICsvLSAwLjIlICAgIDE5NS43bXMgKy8tIDAuMiUgICAgIHNpZ25pZmljYW50CiAgICBiaW5h
cnktdHJlZXM6ICAgICAgLSAgICAgICAgICAgICAgICAgICAyOC42bXMgKy8tIDEuMyUgICAgIDI4
LjNtcyArLy0gMS4yJSAKICAgIGZhbm5rdWNoOiAgICAgICAgICAxLjA3NHggYXMgZmFzdCAgICAg
IDUxLjBtcyArLy0gMC4wJSAgICAgNDcuNW1zICsvLSAwLjglICAgICBzaWduaWZpY2FudAogICAg
bmJvZHk6ICAgICAgICAgICAgIDEuMDMyeCBhcyBmYXN0ICAgICAxMDIuNW1zICsvLSAwLjQlICAg
ICA5OS4zbXMgKy8tIDAuMyUgICAgIHNpZ25pZmljYW50CiAgICBuc2lldmU6ICAgICAgICAgICAg
MS4wODN4IGFzIGZhc3QgICAgICAyMi4zbXMgKy8tIDEuNSUgICAgIDIwLjZtcyArLy0gMS44JSAg
ICAgc2lnbmlmaWNhbnQKCiAgYml0b3BzOiAgICAgICAgICAgICAgMS4wNzV4IGFzIGZhc3QgICAg
IDE0NC4zbXMgKy8tIDAuMyUgICAgMTM0LjJtcyArLy0gMC4zJSAgICAgc2lnbmlmaWNhbnQKICAg
IDNiaXQtYml0cy1pbi1ieXRlOiAxLjA2M3ggYXMgZmFzdCAgICAgIDIyLjBtcyArLy0gMC4wJSAg
ICAgMjAuN21zICsvLSAxLjclICAgICBzaWduaWZpY2FudAogICAgYml0cy1pbi1ieXRlOiAgICAg
IDEuMTE2eCBhcyBmYXN0ICAgICAgMjYuMG1zICsvLSAwLjAlICAgICAyMy4zbXMgKy8tIDEuNSUg
ICAgIHNpZ25pZmljYW50CiAgICBiaXR3aXNlLWFuZDogICAgICAgKjEuMDE2eCBhcyBzbG93KiAg
ICA1MC42bXMgKy8tIDAuNyUgICAgIDUxLjRtcyArLy0gMC43JSAgICAgc2lnbmlmaWNhbnQKICAg
IG5zaWV2ZS1iaXRzOiAgICAgICAxLjE3OHggYXMgZmFzdCAgICAgIDQ1LjdtcyArLy0gMC44JSAg
ICAgMzguOG1zICsvLSAwLjglICAgICBzaWduaWZpY2FudAoKICBjb250cm9sZmxvdzogICAgICAg
ICAxLjA0OXggYXMgZmFzdCAgICAgIDE3LjFtcyArLy0gMS4zJSAgICAgMTYuM21zICsvLSAyLjEl
ICAgICBzaWduaWZpY2FudAogICAgcmVjdXJzaXZlOiAgICAgICAgIDEuMDQ5eCBhcyBmYXN0ICAg
ICAgMTcuMW1zICsvLSAxLjMlICAgICAxNi4zbXMgKy8tIDIuMSUgICAgIHNpZ25pZmljYW50Cgog
IGNyeXB0bzogICAgICAgICAgICAgIDEuMDczeCBhcyBmYXN0ICAgICAgODcuOG1zICsvLSAwLjUl
ICAgICA4MS44bXMgKy8tIDAuNCUgICAgIHNpZ25pZmljYW50CiAgICBhZXM6ICAgICAgICAgICAg
ICAgMS4wMzJ4IGFzIGZhc3QgICAgICAyOC42bXMgKy8tIDEuMyUgICAgIDI3LjdtcyArLy0gMS4y
JSAgICAgc2lnbmlmaWNhbnQKICAgIG1kNTogICAgICAgICAgICAgICAxLjA4M3ggYXMgZmFzdCAg
ICAgIDMwLjFtcyArLy0gMC44JSAgICAgMjcuOG1zICsvLSAxLjElICAgICBzaWduaWZpY2FudAog
ICAgc2hhMTogICAgICAgICAgICAgIDEuMTA2eCBhcyBmYXN0ICAgICAgMjkuMW1zICsvLSAwLjgl
ICAgICAyNi4zbXMgKy8tIDEuMyUgICAgIHNpZ25pZmljYW50CgogIGRhdGU6ICAgICAgICAgICAg
ICAgIC0gICAgICAgICAgICAgICAgICAxNDguMG1zICsvLSAwLjQlICAgIDE0Ny41bXMgKy8tIDAu
NSUgCiAgICBmb3JtYXQtdG9mdGU6ICAgICAgLSAgICAgICAgICAgICAgICAgICA4OS45bXMgKy8t
IDAuNiUgICAgIDg5LjltcyArLy0gMC41JSAKICAgIGZvcm1hdC14cGFyYjogICAgICAxLjAwOXgg
YXMgZmFzdCAgICAgIDU4LjFtcyArLy0gMC40JSAgICAgNTcuNm1zICsvLSAwLjYlICAgICBzaWdu
aWZpY2FudAoKICBtYXRoOiAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgMTYyLjVt
cyArLy0gMC4yJSAgICAxNjIuNW1zICsvLSAwLjQlIAogICAgY29yZGljOiAgICAgICAgICAgICox
LjAxN3ggYXMgc2xvdyogICAgNDIuNG1zICsvLSAwLjklICAgICA0My4xbXMgKy8tIDAuNSUgICAg
IHNpZ25pZmljYW50CiAgICBwYXJ0aWFsLXN1bXM6ICAgICAgPz8gICAgICAgICAgICAgICAgICA5
MC4ybXMgKy8tIDAuMyUgICAgIDkwLjNtcyArLy0gMC41JSAgICAgbm90IGNvbmNsdXNpdmU6IG1p
Z2h0IGJlICoxLjAwMXggYXMgc2xvdyoKICAgIHNwZWN0cmFsLW5vcm06ICAgICAxLjAyN3ggYXMg
ZmFzdCAgICAgIDI5LjltcyArLy0gMC44JSAgICAgMjkuMW1zICsvLSAwLjglICAgICBzaWduaWZp
Y2FudAoKICByZWdleHA6ICAgICAgICAgICAgICAxLjAwN3ggYXMgZmFzdCAgICAgMTg4LjRtcyAr
Ly0gMC4zJSAgICAxODcuMG1zICsvLSAwLjMlICAgICBzaWduaWZpY2FudAogICAgZG5hOiAgICAg
ICAgICAgICAgIDEuMDA3eCBhcyBmYXN0ICAgICAxODguNG1zICsvLSAwLjMlICAgIDE4Ny4wbXMg
Ky8tIDAuMyUgICAgIHNpZ25pZmljYW50CgogIHN0cmluZzogICAgICAgICAgICAgIDEuMDE1eCBh
cyBmYXN0ICAgICAzOTcuMW1zICsvLSAwLjQlICAgIDM5MS4xbXMgKy8tIDAuMyUgICAgIHNpZ25p
ZmljYW50CiAgICBiYXNlNjQ6ICAgICAgICAgICAgMS4wMTh4IGFzIGZhc3QgICAgICA1Ni43bXMg
Ky8tIDAuOSUgICAgIDU1LjdtcyArLy0gMC42JSAgICAgc2lnbmlmaWNhbnQKICAgIGZhc3RhOiAg
ICAgICAgICAgICAxLjA1NHggYXMgZmFzdCAgICAgIDcyLjdtcyArLy0gMC41JSAgICAgNjkuMG1z
ICsvLSAwLjAlICAgICBzaWduaWZpY2FudAogICAgdGFnY2xvdWQ6ICAgICAgICAgID8/ICAgICAg
ICAgICAgICAgICAgOTkuOW1zICsvLSAwLjclICAgIDEwMC4xbXMgKy8tIDAuNCUgICAgIG5vdCBj
b25jbHVzaXZlOiBtaWdodCBiZSAqMS4wMDJ4IGFzIHNsb3cqCiAgICB1bnBhY2stY29kZTogICAg
ICAgMS4wMTF4IGFzIGZhc3QgICAgIDEwNS44bXMgKy8tIDAuMyUgICAgMTA0LjdtcyArLy0gMC4z
JSAgICAgc2lnbmlmaWNhbnQKICAgIHZhbGlkYXRlLWlucHV0OiAgICAtICAgICAgICAgICAgICAg
ICAgIDYyLjBtcyArLy0gMS4xJSAgICAgNjEuNm1zICsvLSAxLjIlIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22807</attachid>
            <date>2008-08-14 19:40:56 -0700</date>
            <delta_ts>2008-08-14 20:19:09 -0700</delta_ts>
            <desc>Fix INT_MAX portability issue identified by bdash.</desc>
            <filename>patch_31bit.f.txt</filename>
            <type>text/plain</type>
            <size>18749</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCShyZXZpc2lvbiAzNTYzOSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAt
NDAsNTIgKzQxLDkxIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgLyoKICAgICAgKiBBIEpTVmFs
dWUqICBpcyBlaXRoZXIgYSBwb2ludGVyIHRvIGEgY2VsbCAoYSBoZWFwLWFsbG9jYXRlZCBvYmpl
Y3QpIG9yIGFuIGltbWVkaWF0ZSAoYSB0eXBlLXRhZ2dlZCAKLSAgICAgKiBzaWduZWQgaW50IG1h
c3F1ZXJhZGluZyBhcyBhIHBvaW50ZXIpLiBUaGUgbG93IHR3byBiaXRzIGluIGEgSlNWYWx1ZSog
YXJlIGF2YWlsYWJsZSAKLSAgICAgKiBmb3IgdHlwZSB0YWdnaW5nIGJlY2F1c2UgYWxsb2NhdG9y
IGFsaWdubWVudCBndWFyYW50ZWVzIHRoZXkgd2lsbCBiZSAwMCBpbiBjZWxsIHBvaW50ZXJzLgor
ICAgICAqIHZhbHVlIG1hc3F1ZXJhZGluZyBhcyBhIHBvaW50ZXIpLiBUaGUgbG93IHR3byBiaXRz
IGluIGEgSlNWYWx1ZSogYXJlIGF2YWlsYWJsZSBmb3IgdHlwZSB0YWdnaW5nCisgICAgICogYmVj
YXVzZSBhbGxvY2F0b3IgYWxpZ25tZW50IGd1YXJhbnRlZXMgdGhleSB3aWxsIGJlIDAwIGluIGNl
bGwgcG9pbnRlcnMuCiAgICAgICoKICAgICAgKiBGb3IgZXhhbXBsZSwgb24gYSAzMiBiaXQgc3lz
dGVtOgogICAgICAqCi0gICAgICogSlNDZWxsKjogICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWFhYWFhYICAgICAgICAgICAgICAgICAwMAotICAgICAqICAgICAgICAgICAgICAgWyBoaWdo
IDMwIGJpdHM6IHBvaW50ZXIgYWRkcmVzcyBdICBbIGxvdyAyIGJpdHMgLS0gYWx3YXlzIDAgXQor
ICAgICAqIEpTQ2VsbCo6ICAgICAgICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WCAgICAgICAgICAgICAgICAgICAgIDAwCisgICAgICogICAgICAgICAgICAgICAgICAgICAgWyBo
aWdoIDMwIGJpdHM6IHBvaW50ZXIgYWRkcmVzcyBdICBbIGxvdyAyIGJpdHMgLS0gYWx3YXlzIDAg
XQorICAgICAqIEpTSW1tZWRpYXRlOiAgICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWCAgICAgICAgICAgICAgICAgICAgIFRUCisgICAgICogICAgICAgICAgICAgICAgICAgICAg
WyBoaWdoIDMwIGJpdHM6ICdwYXlsb2FkJyBdICAgICAgICAgICAgIFsgbG93IDIgYml0cyAtLSB0
YWcgXQogICAgICAqCi0gICAgICogSlNJbW1lZGlhdGU6ICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWFhYWFhYICAgICAgICAgICAgICAgICBUVAotICAgICAqICAgICAgICAgICAgICAgWyBoaWdo
IDMwIGJpdHM6IHNpZ25lZCBpbnQgXSAgICAgICBbIGxvdyAyIGJpdHMgLS0gdHlwZSB0YWcgXQor
ICAgICAqIFdoZXJlIHRoZSBib3R0b20gdHdvIGJpdHMgYXJlIG5vbi16ZXJvIHRoZXkgZWl0aGVy
IGluZGljYXRlIHRoYXQgdGhlIGltbWVkaWF0ZSBpcyBhIDMxIGJpdCBzaWduZWQKKyAgICAgKiBp
bnRlZ2VyLCBvciB0aGV5IG1hcmsgdGhlIHZhbHVlIGFzIGJlaW5nIGFuIGltbWVkaWF0ZSBvZiBh
IHR5cGUgb3RoZXIgdGhhbiBpbnRlZ2VyLCB3aXRoIGEgc2Vjb25kYXJ5CisgICAgICogdGFnIHVz
ZWQgdG8gaW5kaWNhdGUgdGhlIGV4YWN0IHR5cGUuCiAgICAgICoKLSAgICAgKiBUaGUgYml0ICJw
YXlsb2FkIiAodGhlIGhpZ2ggMzAgYml0cykgaXMgYSAzMCBiaXQgc2lnbmVkIGludCBmb3IgaW1t
ZWRpYXRlIG51bWJlcnMsIGEgZmxhZyB0byBkaXN0aW5ndWlzaCB0cnVlL2ZhbHNlCi0gICAgICog
YW5kIHVuZGVmaW5lZC9udWxsLgorICAgICAqIFdoZXJlIHRoZSBsb3dlc3QgYml0IGlzIHNldCAo
VFQgaXMgZXF1YWwgdG8gMDEgb3IgMTEpIHRoZSBoaWdoIDMxIGJpdHMgZm9ybSBhIDMxIGJpdCBz
aWduZWQgaW50IHZhbHVlLgorICAgICAqIFdoZXJlIFRUIGlzIGVxdWFsIHRvIDEwIHRoaXMgaW5k
aWNhdGVzIHRoaXMgaXMgYSB0eXBlIG9mIGltbWVkaWF0ZSBvdGhlciB0aGFuIGFuIGludGVnZXIs
IGFuZCB0aGUgbmV4dAorICAgICAqIHR3byBiaXRzIHdpbGwgZm9ybSBhbiBleHRlbmRlZCB0YWcu
CiAgICAgICoKLSAgICAgKiBOb3RpY2UgdGhhdCB0aGUgSlNUeXBlIHZhbHVlIG9mIE51bGxUeXBl
IGlzIDQsIHdoaWNoIHJlcXVpcmVzIDMgYml0cyB0byBlbmNvZGUuIFNpbmNlIHdlIG9ubHkgaGF2
ZSAyIGJpdHMgCi0gICAgICogYXZhaWxhYmxlIGZvciB0eXBlIHRhZ2dpbmcsIHdlIHRhZyB0aGUg
bnVsbCBpbW1lZGlhdGUgd2l0aCBVbmRlZmluZWRUeXBlLCBhbmQgSlNJbW1lZGlhdGU6OnR5cGUo
KSBoYXMgCi0gICAgICogdG8gc29ydCB0aGVtIG91dC4KKyAgICAgKiAzMSBiaXQgc2lnbmVkIGlu
dDogICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFggICAgICAgICAgICAgICAgICAgICBY
MQorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgaGlnaCAzMCBiaXRzIG9mIHRoZSB2YWx1
ZSBdICAgICAgWyBoaWdoIGJpdCBwYXJ0IG9mIHZhbHVlIF0KKyAgICAgKiBPdGhlcjogICAgICAg
ICAgICAgICBZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZICAgICAgWlogICAgICAgICAgICAg
ICAxMAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgZXh0ZW5kZWQgJ3BheWxvYWQnIF0g
IFsgIGV4dGVuZGVkIHRhZyAgXSAgWyAgdGFnICdvdGhlcicgIF0KKyAgICAgKgorICAgICAqIFdo
ZXJlIHRoZSBmaXJzdCBiaXQgb2YgdGhlIGV4dGVuZGVkIHRhZyBpcyBzZXQgdGhpcyBmbGFncyB0
aGUgdmFsdWUgYXMgYmVpbmcgYSBib29sZWFuLCBhbmQgdGhlIGZvbGxvd2luZworICAgICAqIGJp
dCB3b3VsZCBmbGFnIHRoZSB2YWx1ZSBhcyB1bmRlZmluZWQuICBJZiBuZWl0aGVyIGJpdHMgYXJl
IHNldCwgdGhlIHZhbHVlIGlzIG51bGwuCisgICAgICoKKyAgICAgKiBPdGhlcjogICAgICAgICAg
ICAgICBZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZICAgICAgVUIgICAgICAgICAgICAgICAx
MAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgZXh0ZW5kZWQgJ3BheWxvYWQnIF0gIFsg
dW5kZWZpbmVkIHwgYm9vbCBdICBbIHRhZyAnb3RoZXInIF0KKyAgICAgKgorICAgICAqIEZvciBi
b29sZWFuIHZhbHVlIHRoZSBsb3dlc3QgYml0IGluIHRoZSBwYXlsb2FkIGhvbGRzIHRoZSB2YWx1
ZSBvZiB0aGUgYm9vbCwgYWxsIHJlbWFpbmluZyBiaXRzIGFyZSB6ZXJvLgorICAgICAqIEZvciB1
bmRlZmluZWQgb3IgbnVsbCBpbW1lZGlhdGVzIHRoZSBwYXlsb2FkIGlzIHplcm8uCisgICAgICoK
KyAgICAgKiBCb29sZWFuOiAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBW
ICAgICAgMDEgICAgICAgICAgICAgICAxMAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsg
Ym9vbGVhbiB2YWx1ZSBdICAgICAgICAgICAgICBbIGJvb2wgXSAgICAgICBbIHRhZyAnb3RoZXIn
IF0KKyAgICAgKiBVbmRlZmluZWQ6ICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwICAgICAgMTAgICAgICAgICAgICAgICAxMAorICAgICAqICAgICAgICAgICAgICAgICAgICAg
IFsgemVybyBdICAgICAgICAgICAgICAgICAgICBbIHVuZGVmaW5lZCBdICAgICBbIHRhZyAnb3Ro
ZXInIF0KKyAgICAgKiBOdWxsOiAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwICAgICAgMDAgICAgICAgICAgICAgICAxMAorICAgICAqICAgICAgICAgICAgICAgICAg
ICAgIFsgemVybyBdICAgICAgICAgICAgICAgICAgICAgICBbIHplcm8gXSAgICAgICBbIHRhZyAn
b3RoZXInIF0KICAgICAgKi8KIAogICAgIGNsYXNzIEpTSW1tZWRpYXRlIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVpbnRwdHJfdCBUYWdNYXNrICAgICAgICAgICA9IDB4M3U7IC8vIHByaW1hcnkg
dGFnIGlzIDIgYml0cyBsb25nCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgVGFnQml0
VHlwZUludGVnZXIgPSAweDF1OyAvLyBib3R0b20gYml0IHNldCBpbmRpY2F0ZXMgaW50LCB0aGlz
IGRvbWluYXRlcyB0aGUgZm9sbG93aW5nIGJpdAorICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0
cl90IFRhZ0JpdFR5cGVPdGhlciAgID0gMHgydTsgLy8gc2Vjb25kIGJpdCBzZXQgaW5kaWNhdGVz
IGltbWVkaWF0ZSBvdGhlciB0aGFuIGFuIGludGVnZXIKKworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludHB0cl90IEV4dGVuZGVkVGFnTWFzayAgICAgICAgID0gMHhDdTsgLy8gZXh0ZW5kZWQgdGFn
IGhvbGRzIGEgZnVydGhlciB0d28gYml0cworICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90
IEV4dGVuZGVkVGFnQml0Qm9vbCAgICAgID0gMHg0dTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnRwdHJfdCBFeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZCA9IDB4OHU7CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnRwdHJfdCBGdWxsVGFnVHlwZU1hc2sgICAgICA9IFRhZ01hc2sgfCBFeHRlbmRl
ZFRhZ01hc2s7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRnVsbFRhZ1R5cGVCb29s
ICAgICAgPSBUYWdCaXRUeXBlT3RoZXIgfCBFeHRlbmRlZFRhZ0JpdEJvb2w7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1aW50cHRyX3QgRnVsbFRhZ1R5cGVVbmRlZmluZWQgPSBUYWdCaXRUeXBlT3Ro
ZXIgfCBFeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRw
dHJfdCBGdWxsVGFnVHlwZU51bGwgICAgICA9IFRhZ0JpdFR5cGVPdGhlcjsKKworICAgICAgICBz
dGF0aWMgY29uc3QgdWludDMyX3QgSW50ZWdlclBheWxvYWRTaGlmdCAgPSAxdTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IEV4dGVuZGVkUGF5bG9hZFNoaWZ0ID0gNHU7CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBFeHRlbmRlZFBheWxvYWRCaXRCb29sVmFsdWUgPSAx
IDw8IEV4dGVuZGVkUGF5bG9hZFNoaWZ0OworIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0ltbWVkaWF0ZShjb25zdCBKU1ZhbHVlKiB2KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0VGFnKHYpICE9IDA7CisgICAgICAgICAgICByZXR1
cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIFRhZ01hc2spOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzTnVtYmVyKGNv
bnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoZ2V0VGFnKHYp
ID09IE51bWJlclR5cGUpOworICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4odikgJiBUYWdCaXRUeXBlSW50ZWdlcik7CiAgICAgICAgIH0KIAogICAgICAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzUG9zaXRpdmVOdW1iZXIoY29uc3QgSlNWYWx1ZSog
dikKICAgICAgICAgewogICAgICAgICAgICAgLy8gQSBzaW5nbGUgbWFzayB0byBjaGVjayBmb3Ig
dGhlIHNpZ24gYml0IGFuZCB0aGUgbnVtYmVyIHRhZyBhbGwgYXQgb25jZS4KLSAgICAgICAgICAg
IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKDB4ODAwMDAwMDAgfCBO
dW1iZXJUeXBlKSkgPT0gTnVtYmVyVHlwZTsKKyAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKDB4ODAwMDAwMDAgfCBUYWdCaXRUeXBlSW50ZWdlcikp
ID09IFRhZ0JpdFR5cGVJbnRlZ2VyOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGlzQm9vbGVhbihjb25zdCBKU1ZhbHVlKiB2KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gKGdldFRhZyh2KSA9PSBCb29sZWFuVHlwZSk7CisgICAg
ICAgICAgICByZXR1cm4gKChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiBGdWxsVGFn
VHlwZU1hc2spID09IEZ1bGxUYWdUeXBlQm9vbCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIC8vIFNpbmNlIHdlIGhhdmUgcm9vbSBmb3Igb25seSAzIHVuaXF1ZSB0YWdzLCBudWxsIGFu
ZCB1bmRlZmluZWQgaGF2ZSB0byBzaGFyZS4KICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1VuZGVmaW5lZE9yTnVsbChjb25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKGdldFRhZyh2KSA9PSBVbmRlZmluZWRUeXBlKTsKKyAgICAgICAgICAg
IC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5k
ZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KKyAgICAgICAgICAgIHJldHVybiAoKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIH5FeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZCkg
PT0gRnVsbFRhZ1R5cGVOdWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGlz
TmVnYXRpdmUoY29uc3QgSlNWYWx1ZSogdikKQEAgLTEwOSw3ICsxNDksNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGFyZUJvdGhJbW1lZGlh
dGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpICYg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIFRhZ01hc2spID09IE51bWJlclR5cGU7
CisgICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpICYg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIGFuZEltbWVk
aWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0IEpTVmFsdWUqIHYyKQpAQCAtMTIx
LDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlKiB4b3JJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBK
U1ZhbHVlKiB2MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlh
dGVOdW1iZXJzKHYxLCB2MikpOwotICAgICAgICAgICAgcmV0dXJuIHRhZyhyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odjEpIF4gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSwgTnVt
YmVyVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4o
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgXiByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odjIpKSB8IFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG9ySW1tZWRpYXRlTnVtYmVycyhjb25zdCBKU1Zh
bHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCkBAIC0xMzMsNDAgKzE3Myw0MCBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogcmlnaHRTaGlm
dEltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdmFsLCBjb25zdCBKU1ZhbHVlKiBzaGlm
dCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlhdGVOdW1iZXJz
KHZhbCwgc2hpZnQpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFs
dWUqPigocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihzaGlmdCkgPj4gMikgJiAweDFmKSkgfCBOdW1iZXJUeXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzaGlmdCkg
Pj4gMSkgJiAweDFmKSkgfCBUYWdCaXRUeXBlSW50ZWdlcik7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyhj
b25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOdW1iZXIgaXMgbm9u
LW5lZ2F0aXZlIGFuZCBhbiBvcGVyYXRpb24gaW52b2x2aW5nIHR3byBvZiB0aGVzZSBjYW4ndCBv
dmVyZmxvdy4KICAgICAgICAgICAgIC8vIENoZWNraW5nIGZvciBhbGxvd2VkIG5lZ2F0aXZlIG51
bWJlcnMgdGFrZXMgbW9yZSB0aW1lIHRoYW4gaXQncyB3b3J0aCBvbiBTdW5TcGlkZXIuCi0gICAg
ICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIChOdW1iZXJU
eXBlICsgKDMgPDwgMzApKSkgPT0gTnVtYmVyVHlwZTsKKyAgICAgICAgICAgIHJldHVybiAocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKFRhZ0JpdFR5cGVJbnRlZ2VyICsgKDMgPDwg
MzApKSkgPT0gVGFnQml0VHlwZUludGVnZXI7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlKiBhZGRJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUq
IHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNh
bkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MSkpOwogICAgICAgICAgICAgQVNTRVJUKGNhbkRv
RmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MikpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgKyAocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIH5OdW1iZXJUeXBlKSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHYxKSArIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MikgLSBUYWdCaXRUeXBl
SW50ZWdlcik7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlKiBzdWJJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVl
KiB2MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3Bl
cmF0aW9ucyh2MSkpOwogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0
aW9ucyh2MikpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgLSAocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHYyKSAmIH5OdW1iZXJUeXBlKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSAtIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MikgKyBUYWdCaXRUeXBlSW50ZWdlcik7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBpbmNJbW1lZGlhdGVO
dW1iZXIoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNh
bkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICsgVGFn
TWFzayArIDEpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSArIDIpOwogICAgICAgICB9CiAKICAgICAg
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogZGVjSW1tZWRpYXRlTnVtYmVyKGNvbnN0
IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5Eb0Zhc3RBZGRp
dGl2ZU9wZXJhdGlvbnModikpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAtIChUYWdNYXNrICsgMSkp
OworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pih2KSAtIDIpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IGRvdWJsZSB0b0RvdWJsZShjb25zdCBKU1ZhbHVlKik7CkBAIC0xOTIsMTE1ICsyMzIsMTQwIEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgSlNPYmplY3QqIHByb3RvdHlwZShjb25z
dCBKU1ZhbHVlKiwgRXhlY1N0YXRlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
Y29uc3QgdWludHB0cl90IFRhZ01hc2sgPSAzOyAvLyB0eXBlIHRhZ3MgYXJlIDIgYml0cyBsb25n
Ci0KICAgICAgICAgLy8gSW1tZWRpYXRlIHZhbHVlcyBhcmUgcmVzdHJpY3RlZCB0byBhIDMwIGJp
dCBzaWduZWQgdmFsdWUuCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluSW1tZWRpYXRlSW50
ID0gLSgxIDw8IDI5KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhJbW1lZGlhdGVJbnQg
PSAoMSA8PCAyOSkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1pbkltbWVkaWF0ZUlu
dCA9ICgoLUlOVF9NQVgpIC0gMSkgPj4gSW50ZWdlclBheWxvYWRTaGlmdDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBtYXhJbW1lZGlhdGVJbnQgPSBJTlRfTUFYID4+IEludGVnZXJQYXlsb2Fk
U2hpZnQ7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhJbW1lZGlhdGVVSW50ID0g
bWF4SW1tZWRpYXRlSW50OwogICAgICAgICAKLSAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSogdGFnKHVpbnRwdHJfdCBiaXRzLCB1aW50cHRyX3QgdGFnKQorICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBtYWtlSW50KGludDMyX3QgdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigodmFsdWUg
PDwgSW50ZWdlclBheWxvYWRTaGlmdCkgfCBUYWdCaXRUeXBlSW50ZWdlcik7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG1ha2VCb29s
KGJvb2wgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNWYWx1ZSo+KChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGIpIDw8IEV4dGVuZGVkUGF5bG9hZFNo
aWZ0KSB8IEZ1bGxUYWdUeXBlQm9vbCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG1ha2VVbmRlZmluZWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oRnVsbFRhZ1R5cGVV
bmRlZmluZWQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1ZhbHVlKiBtYWtlTnVsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihGdWxsVGFnVHlwZU51bGwpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBpbnQzMl90IGludFZhbHVlKGNv
bnN0IEpTVmFsdWUqIHYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGludDMyX3Q+KHYpID4+IDE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHVpbnRWYWx1ZShjb25zdCBKU1ZhbHVlKiB2KQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4o
Yml0cyB8IHRhZyk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJf
dD4odikgPj4gMTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgdWludHB0cl90IHVuVGFnKGNvbnN0IEpTVmFsdWUqIHYpCisgICAgICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIGJvb2wgYm9vbFZhbHVlKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiB+VGFn
TWFzazsKKyAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4odikg
JiBFeHRlbmRlZFBheWxvYWRCaXRCb29sVmFsdWUpICE9IDA7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVpbnRwdHJfdCBnZXRUYWcoY29uc3QgSlNW
YWx1ZSogdikKKyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdWludHB0cl90IHJhd1ZhbHVl
KGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiBUYWdNYXNrOworICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KTsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkgeyByZXR1
cm4gdGFnKDEgPDwgMiwgQm9vbGVhblR5cGUpOyB9Ci0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVl
KiBKU0ltbWVkaWF0ZTo6ZmFsc2VJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMCwgQm9vbGVhblR5
cGUpOyB9Ci0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6dW5kZWZpbmVk
SW1tZWRpYXRlKCkgeyByZXR1cm4gdGFnKDEgPDwgMiwgVW5kZWZpbmVkVHlwZSk7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpudWxsSW1tZWRpYXRlKCkgeyByZXR1
cm4gdGFnKDAsIFVuZGVmaW5lZFR5cGUpOyB9CisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBK
U0ltbWVkaWF0ZTo6dHJ1ZUltbWVkaWF0ZSgpIHsgcmV0dXJuIG1ha2VCb29sKHRydWUpOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZmFsc2VJbW1lZGlhdGUoKSB7
IHJldHVybiBtYWtlQm9vbChmYWxzZSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpT
SW1tZWRpYXRlOjp1bmRlZmluZWRJbW1lZGlhdGUoKSB7IHJldHVybiBtYWtlVW5kZWZpbmVkKCk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpudWxsSW1tZWRpYXRl
KCkgeyByZXR1cm4gbWFrZU51bGwoKTsgfQogCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyBpbXBvc3Np
YmxlIGJlY2F1c2UgMHg0IGlzIG5vdCBhIHZhbGlkIHBvaW50ZXIgYnV0IGEgdGFnIG9mIDAgd291
bGQgaW5kaWNhdGUgbm9uLWltbWVkaWF0ZQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJ
bW1lZGlhdGU6OmltcG9zc2libGVWYWx1ZSgpIHsgcmV0dXJuIHRhZygxIDw8IDIsIDApOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6aW1wb3NzaWJsZVZhbHVlKCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oMHg0KTsgfQogCiAgICAgQUxXQVlT
X0lOTElORSBib29sIEpTSW1tZWRpYXRlOjp0b0Jvb2xlYW4oY29uc3QgSlNWYWx1ZSogdikKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpc0ltbWVkaWF0ZSh2KSk7Ci0gICAgICAgIHVpbnRwdHJfdCBi
aXRzID0gdW5UYWcodik7Ci0gICAgICAgIHJldHVybiAoYml0cyAhPSAwKSAmIChKU0ltbWVkaWF0
ZTo6Z2V0VGFnKHYpICE9IFVuZGVmaW5lZFR5cGUpOworICAgICAgICB1aW50cHRyX3QgYml0cyA9
IHJhd1ZhbHVlKHYpOworICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIChiaXRzICYgVGFnQml0
VHlwZUludGVnZXIpID8gKGJpdHMgIT0gVGFnQml0VHlwZUludGVnZXIpIDogLy8gITAgaW50cwor
ICAgICAgICAgICAgKGJpdHMgPT0gKEZ1bGxUYWdUeXBlQm9vbCB8IEV4dGVuZGVkUGF5bG9hZEJp
dEJvb2xWYWx1ZSkpOyAvLyBib29sIHRydWUKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHVp
bnQzMl90IEpTSW1tZWRpYXRlOjp0b1RydW5jYXRlZFVJbnQzMihjb25zdCBKU1ZhbHVlKiB2KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW1tZWRpYXRlKHYpKTsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih2KSA+PiAyKTsK
KyAgICAgICAgQVNTRVJUKGlzTnVtYmVyKHYpKTsKKyAgICAgICAgcmV0dXJuIGludFZhbHVlKHYp
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20o
Y2hhciBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOwor
ICAgICAgICByZXR1cm4gbWFrZUludChpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHNpZ25lZCBjaGFyIGkpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KGkp
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20o
dW5zaWduZWQgY2hhciBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJl
clR5cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChpKTsKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHNob3J0IGkpCiAgICAgewotICAgICAg
ICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50
KGkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZy
b20odW5zaWduZWQgc2hvcnQgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBO
dW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShpbnQgaSkKICAgICB7CiAgICAg
ICAgIGlmICgoaSA8IG1pbkltbWVkaWF0ZUludCkgfCAoaSA+IG1heEltbWVkaWF0ZUludCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5
cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHVuc2lnbmVkIGkpCiAgICAgewogICAgICAg
ICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gbWFrZUlu
dChpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpm
cm9tKGxvbmcgaSkKICAgICB7CiAgICAgICAgIGlmICgoaSA8IG1pbkltbWVkaWF0ZUludCkgfCAo
aSA+IG1heEltbWVkaWF0ZUludCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0
dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChpKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHVu
c2lnbmVkIGxvbmcgaSkKICAgICB7CiAgICAgICAgIGlmIChpID4gbWF4SW1tZWRpYXRlVUludCkK
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVy
VHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KGkpOwogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20obG9uZyBsb25nIGkpCiAgICAgewogICAg
ICAgICBpZiAoKGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkgPiBtYXhJbW1lZGlhdGVJbnQpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihpKSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoc3Rh
dGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25lZCBsb25nIGxvbmcgaSkKICAgICB7CiAgICAg
ICAgIGlmIChpID4gbWF4SW1tZWRpYXRlVUludCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICByZXR1cm4gdGFnKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkgPDwgMiwgTnVtYmVyVHlw
ZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20oZG91
YmxlIGQpCkBAIC0zMTQsMzMgKzM3OSwzNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgaWYg
KChpbnRWYWwgIT0gZCkgfHwgKCFpbnRWYWwgJiYgc2lnbmJpdChkKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gdGFnKGludFZhbCA8PCAyLCBOdW1iZXJUeXBlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaW50VmFsKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIGludDMyX3QgSlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZEludDMyKGNvbnN0IEpTVmFsdWUq
IHYpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNOdW1iZXIodikpOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50MzJfdD4odW5UYWcodikpID4+IDI7CisgICAgICAgIHJldHVybiBpbnRW
YWx1ZSh2KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU0ltbWVkaWF0ZTo6
dG9Eb3VibGUoY29uc3QgSlNWYWx1ZSogdikKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ltbWVk
aWF0ZSh2KSk7Ci0gICAgICAgIGNvbnN0IGludDMyX3QgaSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KHVuVGFnKHYpKSA+PiAyOwotICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmdldFRhZyh2KSA9PSBV
bmRlZmluZWRUeXBlICYmIGkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKTsKLSAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIGlmIChp
c051bWJlcih2KSkKKyAgICAgICAgICAgIHJldHVybiBpbnRWYWx1ZSh2KTsKKyAgICAgICAgaWYg
KHJhd1ZhbHVlKHYpID09IChGdWxsVGFnVHlwZUJvb2wgfCBFeHRlbmRlZFBheWxvYWRCaXRCb29s
VmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIDEuMDsKKyAgICAgICAgaWYgKHJhd1ZhbHVlKHYp
ICE9IEZ1bGxUYWdUeXBlVW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIEpTSW1tZWRpYXRlOjpnZXRVSW50MzIoY29uc3Qg
SlNWYWx1ZSogdiwgdWludDMyX3QmIGkpCiAgICAgewotICAgICAgICBpID0gc3RhdGljX2Nhc3Q8
dWludHB0cl90Pih1blRhZyh2KSkgPj4gMjsKKyAgICAgICAgaSA9IHVpbnRWYWx1ZSh2KTsKICAg
ICAgICAgcmV0dXJuIGlzUG9zaXRpdmVOdW1iZXIodik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSBib29sIEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMihjb25zdCBKU1ZhbHVlKiB2
LCBpbnQzMl90JiBpKQogICAgIHsKLSAgICAgICAgaSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHVu
VGFnKHYpKSA+PiAyOworICAgICAgICBpID0gaW50VmFsdWUodik7CiAgICAgICAgIHJldHVybiBp
c051bWJlcih2KTsKICAgICB9CiAKQEAgLTM1MywxMCArNDIxLDEzIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSW1tZWRpYXRlKHYpKTsKICAgICAgICAgCi0gICAg
ICAgIHVpbnRwdHJfdCB0YWcgPSBnZXRUYWcodik7Ci0gICAgICAgIGlmICh0YWcgPT0gVW5kZWZp
bmVkVHlwZSkKLSAgICAgICAgICAgIHJldHVybiB2ID09IHVuZGVmaW5lZEltbWVkaWF0ZSgpID8g
VW5kZWZpbmVkVHlwZSA6IE51bGxUeXBlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNU
eXBlPih0YWcpOworICAgICAgICBpZiAoaXNOdW1iZXIodikpCisgICAgICAgICAgICByZXR1cm4g
TnVtYmVyVHlwZTsKKyAgICAgICAgaWYgKGlzQm9vbGVhbih2KSkKKyAgICAgICAgICAgIHJldHVy
biBCb29sZWFuVHlwZTsKKyAgICAgICAgaWYgKHYgIT0gdW5kZWZpbmVkSW1tZWRpYXRlKCkpCisg
ICAgICAgICAgICByZXR1cm4gTnVsbFR5cGU7CisgICAgICAgIHJldHVybiBVbmRlZmluZWRUeXBl
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSoganNVbmRlZmluZWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22810</attachid>
            <date>2008-08-14 20:19:09 -0700</date>
            <delta_ts>2008-08-14 21:52:01 -0700</delta_ts>
            <desc>Replace a couple of magic constants (1 and 2) with their symbolic names.</desc>
            <filename>patch_31bit.g.txt</filename>
            <type>text/plain</type>
            <size>18853</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCShyZXZpc2lvbiAzNTYzOSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAt
NDAsNTIgKzQxLDkxIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgLyoKICAgICAgKiBBIEpTVmFs
dWUqICBpcyBlaXRoZXIgYSBwb2ludGVyIHRvIGEgY2VsbCAoYSBoZWFwLWFsbG9jYXRlZCBvYmpl
Y3QpIG9yIGFuIGltbWVkaWF0ZSAoYSB0eXBlLXRhZ2dlZCAKLSAgICAgKiBzaWduZWQgaW50IG1h
c3F1ZXJhZGluZyBhcyBhIHBvaW50ZXIpLiBUaGUgbG93IHR3byBiaXRzIGluIGEgSlNWYWx1ZSog
YXJlIGF2YWlsYWJsZSAKLSAgICAgKiBmb3IgdHlwZSB0YWdnaW5nIGJlY2F1c2UgYWxsb2NhdG9y
IGFsaWdubWVudCBndWFyYW50ZWVzIHRoZXkgd2lsbCBiZSAwMCBpbiBjZWxsIHBvaW50ZXJzLgor
ICAgICAqIHZhbHVlIG1hc3F1ZXJhZGluZyBhcyBhIHBvaW50ZXIpLiBUaGUgbG93IHR3byBiaXRz
IGluIGEgSlNWYWx1ZSogYXJlIGF2YWlsYWJsZSBmb3IgdHlwZSB0YWdnaW5nCisgICAgICogYmVj
YXVzZSBhbGxvY2F0b3IgYWxpZ25tZW50IGd1YXJhbnRlZXMgdGhleSB3aWxsIGJlIDAwIGluIGNl
bGwgcG9pbnRlcnMuCiAgICAgICoKICAgICAgKiBGb3IgZXhhbXBsZSwgb24gYSAzMiBiaXQgc3lz
dGVtOgogICAgICAqCi0gICAgICogSlNDZWxsKjogICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWFhYWFhYICAgICAgICAgICAgICAgICAwMAotICAgICAqICAgICAgICAgICAgICAgWyBoaWdo
IDMwIGJpdHM6IHBvaW50ZXIgYWRkcmVzcyBdICBbIGxvdyAyIGJpdHMgLS0gYWx3YXlzIDAgXQor
ICAgICAqIEpTQ2VsbCo6ICAgICAgICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WCAgICAgICAgICAgICAgICAgICAgIDAwCisgICAgICogICAgICAgICAgICAgICAgICAgICAgWyBo
aWdoIDMwIGJpdHM6IHBvaW50ZXIgYWRkcmVzcyBdICBbIGxvdyAyIGJpdHMgLS0gYWx3YXlzIDAg
XQorICAgICAqIEpTSW1tZWRpYXRlOiAgICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWCAgICAgICAgICAgICAgICAgICAgIFRUCisgICAgICogICAgICAgICAgICAgICAgICAgICAg
WyBoaWdoIDMwIGJpdHM6ICdwYXlsb2FkJyBdICAgICAgICAgICAgIFsgbG93IDIgYml0cyAtLSB0
YWcgXQogICAgICAqCi0gICAgICogSlNJbW1lZGlhdGU6ICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWFhYWFhYICAgICAgICAgICAgICAgICBUVAotICAgICAqICAgICAgICAgICAgICAgWyBoaWdo
IDMwIGJpdHM6IHNpZ25lZCBpbnQgXSAgICAgICBbIGxvdyAyIGJpdHMgLS0gdHlwZSB0YWcgXQor
ICAgICAqIFdoZXJlIHRoZSBib3R0b20gdHdvIGJpdHMgYXJlIG5vbi16ZXJvIHRoZXkgZWl0aGVy
IGluZGljYXRlIHRoYXQgdGhlIGltbWVkaWF0ZSBpcyBhIDMxIGJpdCBzaWduZWQKKyAgICAgKiBp
bnRlZ2VyLCBvciB0aGV5IG1hcmsgdGhlIHZhbHVlIGFzIGJlaW5nIGFuIGltbWVkaWF0ZSBvZiBh
IHR5cGUgb3RoZXIgdGhhbiBpbnRlZ2VyLCB3aXRoIGEgc2Vjb25kYXJ5CisgICAgICogdGFnIHVz
ZWQgdG8gaW5kaWNhdGUgdGhlIGV4YWN0IHR5cGUuCiAgICAgICoKLSAgICAgKiBUaGUgYml0ICJw
YXlsb2FkIiAodGhlIGhpZ2ggMzAgYml0cykgaXMgYSAzMCBiaXQgc2lnbmVkIGludCBmb3IgaW1t
ZWRpYXRlIG51bWJlcnMsIGEgZmxhZyB0byBkaXN0aW5ndWlzaCB0cnVlL2ZhbHNlCi0gICAgICog
YW5kIHVuZGVmaW5lZC9udWxsLgorICAgICAqIFdoZXJlIHRoZSBsb3dlc3QgYml0IGlzIHNldCAo
VFQgaXMgZXF1YWwgdG8gMDEgb3IgMTEpIHRoZSBoaWdoIDMxIGJpdHMgZm9ybSBhIDMxIGJpdCBz
aWduZWQgaW50IHZhbHVlLgorICAgICAqIFdoZXJlIFRUIGlzIGVxdWFsIHRvIDEwIHRoaXMgaW5k
aWNhdGVzIHRoaXMgaXMgYSB0eXBlIG9mIGltbWVkaWF0ZSBvdGhlciB0aGFuIGFuIGludGVnZXIs
IGFuZCB0aGUgbmV4dAorICAgICAqIHR3byBiaXRzIHdpbGwgZm9ybSBhbiBleHRlbmRlZCB0YWcu
CiAgICAgICoKLSAgICAgKiBOb3RpY2UgdGhhdCB0aGUgSlNUeXBlIHZhbHVlIG9mIE51bGxUeXBl
IGlzIDQsIHdoaWNoIHJlcXVpcmVzIDMgYml0cyB0byBlbmNvZGUuIFNpbmNlIHdlIG9ubHkgaGF2
ZSAyIGJpdHMgCi0gICAgICogYXZhaWxhYmxlIGZvciB0eXBlIHRhZ2dpbmcsIHdlIHRhZyB0aGUg
bnVsbCBpbW1lZGlhdGUgd2l0aCBVbmRlZmluZWRUeXBlLCBhbmQgSlNJbW1lZGlhdGU6OnR5cGUo
KSBoYXMgCi0gICAgICogdG8gc29ydCB0aGVtIG91dC4KKyAgICAgKiAzMSBiaXQgc2lnbmVkIGlu
dDogICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFggICAgICAgICAgICAgICAgICAgICBY
MQorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgaGlnaCAzMCBiaXRzIG9mIHRoZSB2YWx1
ZSBdICAgICAgWyBoaWdoIGJpdCBwYXJ0IG9mIHZhbHVlIF0KKyAgICAgKiBPdGhlcjogICAgICAg
ICAgICAgICBZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZICAgICAgWlogICAgICAgICAgICAg
ICAxMAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgZXh0ZW5kZWQgJ3BheWxvYWQnIF0g
IFsgIGV4dGVuZGVkIHRhZyAgXSAgWyAgdGFnICdvdGhlcicgIF0KKyAgICAgKgorICAgICAqIFdo
ZXJlIHRoZSBmaXJzdCBiaXQgb2YgdGhlIGV4dGVuZGVkIHRhZyBpcyBzZXQgdGhpcyBmbGFncyB0
aGUgdmFsdWUgYXMgYmVpbmcgYSBib29sZWFuLCBhbmQgdGhlIGZvbGxvd2luZworICAgICAqIGJp
dCB3b3VsZCBmbGFnIHRoZSB2YWx1ZSBhcyB1bmRlZmluZWQuICBJZiBuZWl0aGVyIGJpdHMgYXJl
IHNldCwgdGhlIHZhbHVlIGlzIG51bGwuCisgICAgICoKKyAgICAgKiBPdGhlcjogICAgICAgICAg
ICAgICBZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZICAgICAgVUIgICAgICAgICAgICAgICAx
MAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgZXh0ZW5kZWQgJ3BheWxvYWQnIF0gIFsg
dW5kZWZpbmVkIHwgYm9vbCBdICBbIHRhZyAnb3RoZXInIF0KKyAgICAgKgorICAgICAqIEZvciBi
b29sZWFuIHZhbHVlIHRoZSBsb3dlc3QgYml0IGluIHRoZSBwYXlsb2FkIGhvbGRzIHRoZSB2YWx1
ZSBvZiB0aGUgYm9vbCwgYWxsIHJlbWFpbmluZyBiaXRzIGFyZSB6ZXJvLgorICAgICAqIEZvciB1
bmRlZmluZWQgb3IgbnVsbCBpbW1lZGlhdGVzIHRoZSBwYXlsb2FkIGlzIHplcm8uCisgICAgICoK
KyAgICAgKiBCb29sZWFuOiAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBW
ICAgICAgMDEgICAgICAgICAgICAgICAxMAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsg
Ym9vbGVhbiB2YWx1ZSBdICAgICAgICAgICAgICBbIGJvb2wgXSAgICAgICBbIHRhZyAnb3RoZXIn
IF0KKyAgICAgKiBVbmRlZmluZWQ6ICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwICAgICAgMTAgICAgICAgICAgICAgICAxMAorICAgICAqICAgICAgICAgICAgICAgICAgICAg
IFsgemVybyBdICAgICAgICAgICAgICAgICAgICBbIHVuZGVmaW5lZCBdICAgICBbIHRhZyAnb3Ro
ZXInIF0KKyAgICAgKiBOdWxsOiAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwICAgICAgMDAgICAgICAgICAgICAgICAxMAorICAgICAqICAgICAgICAgICAgICAgICAg
ICAgIFsgemVybyBdICAgICAgICAgICAgICAgICAgICAgICBbIHplcm8gXSAgICAgICBbIHRhZyAn
b3RoZXInIF0KICAgICAgKi8KIAogICAgIGNsYXNzIEpTSW1tZWRpYXRlIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVpbnRwdHJfdCBUYWdNYXNrICAgICAgICAgICA9IDB4M3U7IC8vIHByaW1hcnkg
dGFnIGlzIDIgYml0cyBsb25nCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgVGFnQml0
VHlwZUludGVnZXIgPSAweDF1OyAvLyBib3R0b20gYml0IHNldCBpbmRpY2F0ZXMgaW50LCB0aGlz
IGRvbWluYXRlcyB0aGUgZm9sbG93aW5nIGJpdAorICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0
cl90IFRhZ0JpdFR5cGVPdGhlciAgID0gMHgydTsgLy8gc2Vjb25kIGJpdCBzZXQgaW5kaWNhdGVz
IGltbWVkaWF0ZSBvdGhlciB0aGFuIGFuIGludGVnZXIKKworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludHB0cl90IEV4dGVuZGVkVGFnTWFzayAgICAgICAgID0gMHhDdTsgLy8gZXh0ZW5kZWQgdGFn
IGhvbGRzIGEgZnVydGhlciB0d28gYml0cworICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90
IEV4dGVuZGVkVGFnQml0Qm9vbCAgICAgID0gMHg0dTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnRwdHJfdCBFeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZCA9IDB4OHU7CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnRwdHJfdCBGdWxsVGFnVHlwZU1hc2sgICAgICA9IFRhZ01hc2sgfCBFeHRlbmRl
ZFRhZ01hc2s7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRnVsbFRhZ1R5cGVCb29s
ICAgICAgPSBUYWdCaXRUeXBlT3RoZXIgfCBFeHRlbmRlZFRhZ0JpdEJvb2w7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1aW50cHRyX3QgRnVsbFRhZ1R5cGVVbmRlZmluZWQgPSBUYWdCaXRUeXBlT3Ro
ZXIgfCBFeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRw
dHJfdCBGdWxsVGFnVHlwZU51bGwgICAgICA9IFRhZ0JpdFR5cGVPdGhlcjsKKworICAgICAgICBz
dGF0aWMgY29uc3QgdWludDMyX3QgSW50ZWdlclBheWxvYWRTaGlmdCAgPSAxdTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IEV4dGVuZGVkUGF5bG9hZFNoaWZ0ID0gNHU7CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBFeHRlbmRlZFBheWxvYWRCaXRCb29sVmFsdWUgPSAx
IDw8IEV4dGVuZGVkUGF5bG9hZFNoaWZ0OworIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0ltbWVkaWF0ZShjb25zdCBKU1ZhbHVlKiB2KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0VGFnKHYpICE9IDA7CisgICAgICAgICAgICByZXR1
cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIFRhZ01hc2spOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzTnVtYmVyKGNv
bnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoZ2V0VGFnKHYp
ID09IE51bWJlclR5cGUpOworICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4odikgJiBUYWdCaXRUeXBlSW50ZWdlcik7CiAgICAgICAgIH0KIAogICAgICAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzUG9zaXRpdmVOdW1iZXIoY29uc3QgSlNWYWx1ZSog
dikKICAgICAgICAgewogICAgICAgICAgICAgLy8gQSBzaW5nbGUgbWFzayB0byBjaGVjayBmb3Ig
dGhlIHNpZ24gYml0IGFuZCB0aGUgbnVtYmVyIHRhZyBhbGwgYXQgb25jZS4KLSAgICAgICAgICAg
IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKDB4ODAwMDAwMDAgfCBO
dW1iZXJUeXBlKSkgPT0gTnVtYmVyVHlwZTsKKyAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKDB4ODAwMDAwMDAgfCBUYWdCaXRUeXBlSW50ZWdlcikp
ID09IFRhZ0JpdFR5cGVJbnRlZ2VyOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGlzQm9vbGVhbihjb25zdCBKU1ZhbHVlKiB2KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gKGdldFRhZyh2KSA9PSBCb29sZWFuVHlwZSk7CisgICAg
ICAgICAgICByZXR1cm4gKChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiBGdWxsVGFn
VHlwZU1hc2spID09IEZ1bGxUYWdUeXBlQm9vbCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIC8vIFNpbmNlIHdlIGhhdmUgcm9vbSBmb3Igb25seSAzIHVuaXF1ZSB0YWdzLCBudWxsIGFu
ZCB1bmRlZmluZWQgaGF2ZSB0byBzaGFyZS4KICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1VuZGVmaW5lZE9yTnVsbChjb25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKGdldFRhZyh2KSA9PSBVbmRlZmluZWRUeXBlKTsKKyAgICAgICAgICAg
IC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5k
ZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KKyAgICAgICAgICAgIHJldHVybiAoKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIH5FeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZCkg
PT0gRnVsbFRhZ1R5cGVOdWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGlz
TmVnYXRpdmUoY29uc3QgSlNWYWx1ZSogdikKQEAgLTEwOSw3ICsxNDksNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGFyZUJvdGhJbW1lZGlh
dGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpICYg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIFRhZ01hc2spID09IE51bWJlclR5cGU7
CisgICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpICYg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIGFuZEltbWVk
aWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0IEpTVmFsdWUqIHYyKQpAQCAtMTIx
LDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlKiB4b3JJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBK
U1ZhbHVlKiB2MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlh
dGVOdW1iZXJzKHYxLCB2MikpOwotICAgICAgICAgICAgcmV0dXJuIHRhZyhyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odjEpIF4gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSwgTnVt
YmVyVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4o
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgXiByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odjIpKSB8IFRhZ0JpdFR5cGVJbnRlZ2VyKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG9ySW1tZWRpYXRlTnVtYmVycyhjb25zdCBKU1Zh
bHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCkBAIC0xMzMsNDAgKzE3Myw0MCBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogcmlnaHRTaGlm
dEltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdmFsLCBjb25zdCBKU1ZhbHVlKiBzaGlm
dCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlhdGVOdW1iZXJz
KHZhbCwgc2hpZnQpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFs
dWUqPigocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihzaGlmdCkgPj4gMikgJiAweDFmKSkgfCBOdW1iZXJUeXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzaGlmdCkg
Pj4gSW50ZWdlclBheWxvYWRTaGlmdCkgJiAweDFmKSkgfCBUYWdCaXRUeXBlSW50ZWdlcik7CiAg
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNhbkRvRmFzdEFk
ZGl0aXZlT3BlcmF0aW9ucyhjb25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBOdW1iZXIgaXMgbm9uLW5lZ2F0aXZlIGFuZCBhbiBvcGVyYXRpb24gaW52b2x2aW5nIHR3
byBvZiB0aGVzZSBjYW4ndCBvdmVyZmxvdy4KICAgICAgICAgICAgIC8vIENoZWNraW5nIGZvciBh
bGxvd2VkIG5lZ2F0aXZlIG51bWJlcnMgdGFrZXMgbW9yZSB0aW1lIHRoYW4gaXQncyB3b3J0aCBv
biBTdW5TcGlkZXIuCi0gICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2KSAmIChOdW1iZXJUeXBlICsgKDMgPDwgMzApKSkgPT0gTnVtYmVyVHlwZTsKKyAgICAg
ICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYpICYgKFRhZ0JpdFR5
cGVJbnRlZ2VyICsgKDMgPDwgMzApKSkgPT0gVGFnQml0VHlwZUludGVnZXI7CiAgICAgICAgIH0K
IAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBhZGRJbW1lZGlhdGVOdW1i
ZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MSkpOwogICAgICAg
ICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MikpOwotICAgICAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90Pih2MSkgKyAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIH5OdW1iZXJU
eXBlKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSArIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih2MikgLSBUYWdCaXRUeXBlSW50ZWdlcik7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlKiBzdWJJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUq
IHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNh
bkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MSkpOwogICAgICAgICAgICAgQVNTRVJUKGNhbkRv
RmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MikpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgLSAocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIH5OdW1iZXJUeXBlKSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHYxKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MikgKyBUYWdCaXRUeXBl
SW50ZWdlcik7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlKiBpbmNJbW1lZGlhdGVOdW1iZXIoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2KSk7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHYpICsgVGFnTWFzayArIDEpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSArICgxIDw8
IEludGVnZXJQYXlsb2FkU2hpZnQpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUqIGRlY0ltbWVkaWF0ZU51bWJlcihjb25zdCBKU1ZhbHVlKiB2KQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25z
KHYpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgLSAoVGFnTWFzayArIDEpKTsKKyAgICAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odikgLSAoMSA8PCBJbnRlZ2VyUGF5bG9hZFNoaWZ0KSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgZG91YmxlIHRvRG91YmxlKGNvbnN0IEpTVmFsdWUqKTsKQEAgLTE5MiwxMTUg
KzIzMiwxNDAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogcHJv
dG90eXBlKGNvbnN0IEpTVmFsdWUqLCBFeGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgVGFnTWFzayA9IDM7IC8vIHR5cGUgdGFncyBhcmUg
MiBiaXRzIGxvbmcKLQogICAgICAgICAvLyBJbW1lZGlhdGUgdmFsdWVzIGFyZSByZXN0cmljdGVk
IHRvIGEgMzAgYml0IHNpZ25lZCB2YWx1ZS4KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5J
bW1lZGlhdGVJbnQgPSAtKDEgPDwgMjkpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heElt
bWVkaWF0ZUludCA9ICgxIDw8IDI5KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWlu
SW1tZWRpYXRlSW50ID0gKCgtSU5UX01BWCkgLSAxKSA+PiBJbnRlZ2VyUGF5bG9hZFNoaWZ0Owor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heEltbWVkaWF0ZUludCA9IElOVF9NQVggPj4gSW50
ZWdlclBheWxvYWRTaGlmdDsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEltbWVk
aWF0ZVVJbnQgPSBtYXhJbW1lZGlhdGVJbnQ7CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1ZhbHVlKiB0YWcodWludHB0cl90IGJpdHMsIHVpbnRwdHJfdCB0YWcpCisg
ICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG1ha2VJbnQoaW50MzJfdCB2YWx1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1
ZSo+KCh2YWx1ZSA8PCBJbnRlZ2VyUGF5bG9hZFNoaWZ0KSB8IFRhZ0JpdFR5cGVJbnRlZ2VyKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSogbWFrZUJvb2woYm9vbCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxKU1ZhbHVlKj4oKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oYikgPDwgRXh0ZW5k
ZWRQYXlsb2FkU2hpZnQpIHwgRnVsbFRhZ1R5cGVCb29sKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogbWFrZVVuZGVmaW5lZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihG
dWxsVGFnVHlwZVVuZGVmaW5lZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG1ha2VOdWxsKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KEZ1bGxUYWdUeXBlTnVsbCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludDMyX3Qg
aW50VmFsdWUoY29uc3QgSlNWYWx1ZSogdikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4odikgPj4gSW50ZWdlclBheWxvYWRTaGlmdDsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdWludDMyX3Qg
dWludFZhbHVlKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihiaXRzIHwgdGFnKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih2KSA+PiBJbnRlZ2VyUGF5bG9hZFNoaWZ0
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB1aW50
cHRyX3QgdW5UYWcoY29uc3QgSlNWYWx1ZSogdikKKyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBib29sVmFsdWUoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIH5UYWdNYXNrOworICAg
ICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih2KSAmIEV4dGVuZGVk
UGF5bG9hZEJpdEJvb2xWYWx1ZSkgIT0gMDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgdWludHB0cl90IGdldFRhZyhjb25zdCBKU1ZhbHVlKiB2KQor
ICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB1aW50cHRyX3QgcmF3VmFsdWUoY29uc3QgSlNW
YWx1ZSogdikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih2KSAmIFRhZ01hc2s7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHYpOwogICAgICAgICB9CiAgICAgfTsKIAotICAgIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OnRydWVJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMSA8
PCAyLCBCb29sZWFuVHlwZSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRp
YXRlOjpmYWxzZUltbWVkaWF0ZSgpIHsgcmV0dXJuIHRhZygwLCBCb29sZWFuVHlwZSk7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjp1bmRlZmluZWRJbW1lZGlhdGUo
KSB7IHJldHVybiB0YWcoMSA8PCAyLCBVbmRlZmluZWRUeXBlKTsgfQotICAgIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6Om51bGxJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMCwg
VW5kZWZpbmVkVHlwZSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRl
Ojp0cnVlSW1tZWRpYXRlKCkgeyByZXR1cm4gbWFrZUJvb2wodHJ1ZSk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpIHsgcmV0dXJuIG1h
a2VCb29sKGZhbHNlKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6
OnVuZGVmaW5lZEltbWVkaWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmRlZmluZWQoKTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6Om51bGxJbW1lZGlhdGUoKSB7IHJldHVy
biBtYWtlTnVsbCgpOyB9CiAKICAgICAvLyBUaGlzIHZhbHVlIGlzIGltcG9zc2libGUgYmVjYXVz
ZSAweDQgaXMgbm90IGEgdmFsaWQgcG9pbnRlciBidXQgYSB0YWcgb2YgMCB3b3VsZCBpbmRpY2F0
ZSBub24taW1tZWRpYXRlCi0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6
aW1wb3NzaWJsZVZhbHVlKCkgeyByZXR1cm4gdGFnKDEgPDwgMiwgMCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjppbXBvc3NpYmxlVmFsdWUoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigweDQpOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNJbW1lZGlhdGU6OnRvQm9vbGVhbihjb25zdCBKU1ZhbHVlKiB2KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzSW1tZWRpYXRlKHYpKTsKLSAgICAgICAgdWludHB0cl90IGJpdHMgPSB1blRh
Zyh2KTsKLSAgICAgICAgcmV0dXJuIChiaXRzICE9IDApICYgKEpTSW1tZWRpYXRlOjpnZXRUYWco
dikgIT0gVW5kZWZpbmVkVHlwZSk7CisgICAgICAgIHVpbnRwdHJfdCBiaXRzID0gcmF3VmFsdWUo
dik7CisgICAgICAgIHJldHVybgorICAgICAgICAgICAgKGJpdHMgJiBUYWdCaXRUeXBlSW50ZWdl
cikgPyAoYml0cyAhPSBUYWdCaXRUeXBlSW50ZWdlcikgOiAvLyAhMCBpbnRzCisgICAgICAgICAg
ICAoYml0cyA9PSAoRnVsbFRhZ1R5cGVCb29sIHwgRXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZhbHVl
KSk7IC8vIGJvb2wgdHJ1ZQogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdWludDMyX3QgSlNJ
bW1lZGlhdGU6OnRvVHJ1bmNhdGVkVUludDMyKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgewotICAg
ICAgICBBU1NFUlQoaXNJbW1lZGlhdGUodikpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHYpID4+IDIpOworICAgICAgICBB
U1NFUlQoaXNOdW1iZXIodikpOworICAgICAgICByZXR1cm4gaW50VmFsdWUodik7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShjaGFyIGkpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJl
dHVybiBtYWtlSW50KGkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJ
bW1lZGlhdGU6OmZyb20oc2lnbmVkIGNoYXIgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWco
aSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25lZCBj
aGFyIGkpCiAgICAgewotICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlSW50KGkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSogSlNJbW1lZGlhdGU6OmZyb20oc2hvcnQgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25l
ZCBzaG9ydCBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUp
OworICAgICAgICByZXR1cm4gbWFrZUludChpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGludCBpKQogICAgIHsKICAgICAgICAgaWYgKChp
IDwgbWluSW1tZWRpYXRlSW50KSB8IChpID4gbWF4SW1tZWRpYXRlSW50KSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAg
ICAgIHJldHVybiBtYWtlSW50KGkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSogSlNJbW1lZGlhdGU6OmZyb20odW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIGlmIChpID4g
bWF4SW1tZWRpYXRlVUludCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
dGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KGkpOwogICAg
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20obG9uZyBp
KQogICAgIHsKICAgICAgICAgaWYgKChpIDwgbWluSW1tZWRpYXRlSW50KSB8IChpID4gbWF4SW1t
ZWRpYXRlSW50KSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gdGFnKGkg
PDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlSW50KGkpOwogICAgIH0KIAog
ICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20odW5zaWduZWQgbG9u
ZyBpKQogICAgIHsKICAgICAgICAgaWYgKGkgPiBtYXhJbW1lZGlhdGVVSW50KQogICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VJbnQoaSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShsb25nIGxvbmcgaSkKICAgICB7CiAgICAgICAgIGlmICgo
aSA8IG1pbkltbWVkaWF0ZUludCkgfCAoaSA+IG1heEltbWVkaWF0ZUludCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRhZyhzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkp
IDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gbWFrZUludChzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KGkpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1t
ZWRpYXRlOjpmcm9tKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogICAgIHsKICAgICAgICAgaWYgKGkg
PiBtYXhJbW1lZGlhdGVVSW50KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biB0YWcoc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VJbnQoc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShkb3VibGUgZCkKQEAg
LTMxNCwzMyArMzc5LDM2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBpZiAoKGludFZhbCAh
PSBkKSB8fCAoIWludFZhbCAmJiBzaWduYml0KGQpKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgIHJldHVybiB0YWcoaW50VmFsIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICBy
ZXR1cm4gbWFrZUludChpbnRWYWwpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgaW50MzJf
dCBKU0ltbWVkaWF0ZTo6Z2V0VHJ1bmNhdGVkSW50MzIoY29uc3QgSlNWYWx1ZSogdikKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc051bWJlcih2KSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1blRhZyh2KSkgPj4gMjsKKyAgICAgICAgcmV0dXJuIGludFZhbHVlKHYpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTSW1tZWRpYXRlOjp0b0RvdWJsZShj
b25zdCBKU1ZhbHVlKiB2KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSW1tZWRpYXRlKHYpKTsK
LSAgICAgICAgY29uc3QgaW50MzJfdCBpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odW5UYWcodikp
ID4+IDI7Ci0gICAgICAgIGlmIChKU0ltbWVkaWF0ZTo6Z2V0VGFnKHYpID09IFVuZGVmaW5lZFR5
cGUgJiYgaSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpOwotICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgaWYgKGlzTnVtYmVyKHYp
KQorICAgICAgICAgICAgcmV0dXJuIGludFZhbHVlKHYpOworICAgICAgICBpZiAocmF3VmFsdWUo
dikgPT0gKEZ1bGxUYWdUeXBlQm9vbCB8IEV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gMS4wOworICAgICAgICBpZiAocmF3VmFsdWUodikgIT0gRnVsbFRh
Z1R5cGVVbmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gMC4wOworICAgICAgICByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNJbW1lZGlhdGU6OmdldFVJbnQzMihjb25zdCBKU1ZhbHVlKiB2
LCB1aW50MzJfdCYgaSkKICAgICB7Ci0gICAgICAgIGkgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KHVuVGFnKHYpKSA+PiAyOworICAgICAgICBpID0gdWludFZhbHVlKHYpOwogICAgICAgICByZXR1
cm4gaXNQb3NpdGl2ZU51bWJlcih2KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZEludDMyKGNvbnN0IEpTVmFsdWUqIHYsIGludDMyX3Qm
IGkpCiAgICAgewotICAgICAgICBpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odW5UYWcodikpID4+
IDI7CisgICAgICAgIGkgPSBpbnRWYWx1ZSh2KTsKICAgICAgICAgcmV0dXJuIGlzTnVtYmVyKHYp
OwogICAgIH0KIApAQCAtMzUzLDEwICs0MjEsMTMgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoaXNJbW1lZGlhdGUodikpOwogICAgICAgICAKLSAgICAgICAgdWludHB0
cl90IHRhZyA9IGdldFRhZyh2KTsKLSAgICAgICAgaWYgKHRhZyA9PSBVbmRlZmluZWRUeXBlKQot
ICAgICAgICAgICAgcmV0dXJuIHYgPT0gdW5kZWZpbmVkSW1tZWRpYXRlKCkgPyBVbmRlZmluZWRU
eXBlIDogTnVsbFR5cGU7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1R5cGU+KHRhZyk7
CisgICAgICAgIGlmIChpc051bWJlcih2KSkKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJUeXBl
OworICAgICAgICBpZiAoaXNCb29sZWFuKHYpKQorICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW5U
eXBlOworICAgICAgICBpZiAodiAhPSB1bmRlZmluZWRJbW1lZGlhdGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBOdWxsVHlwZTsKKyAgICAgICAgcmV0dXJuIFVuZGVmaW5lZFR5cGU7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBqc1VuZGVmaW5lZCgpCg==
</data>
<flag name="review"
          id="10130"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>