<?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>45165</bug_id>
          
          <creation_ts>2010-09-02 23:24:09 -0700</creation_ts>
          <short_desc>Expose Flags constructor if FileSystem API is Enabled</short_desc>
          <delta_ts>2010-09-13 16:15:11 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>42903</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dumi</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>jianli</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>273802</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-02 23:24:09 -0700</bug_when>
    <thetext>Expose Flags constructor if FileSystem API is Enabled.
http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#the-flags-interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273816</commentid>
    <comment_count>1</comment_count>
      <attachid>66475</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-03 00:06:24 -0700</bug_when>
    <thetext>Created attachment 66475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273856</commentid>
    <comment_count>2</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-03 03:43:38 -0700</bug_when>
    <thetext>is there a way to reuse fileSystemEnabled()? i know that [EnableAtRuntime] requires a getter with a specific name, but i think in this case it might be better to write some custom code to reuse fileSystemEnabled() (if possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274870</commentid>
    <comment_count>3</comment_count>
      <attachid>66475</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-07 00:47:15 -0700</bug_when>
    <thetext>Comment on attachment 66475
Patch

Removing this from the review queue for now as we may not need to expose Flags (sent an email about this to public-webapps).
(Thanks dumi for your review comment!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276927</commentid>
    <comment_count>4</comment_count>
      <attachid>67133</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-09 18:41:07 -0700</bug_when>
    <thetext>Created attachment 67133
Patch

Reviving this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276932</commentid>
    <comment_count>5</comment_count>
      <attachid>67135</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-09 18:51:44 -0700</bug_when>
    <thetext>Created attachment 67135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276978</commentid>
    <comment_count>6</comment_count>
      <attachid>67147</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-09 20:22:12 -0700</bug_when>
    <thetext>Created attachment 67147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276985</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-09 20:26:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; is there a way to reuse fileSystemEnabled()? i know that [EnableAtRuntime] requires a getter with a specific name, but i think in this case it might be better to write some custom code to reuse fileSystemEnabled() (if possible).

I added custom getter for V8 (since EnableAtRuntime is valid only in V8).  This doesn&apos;t stop exposing Flags constructor Window though -- I wasn&apos;t able to find a way to hook the custom code from the DOMWindow&apos;s prototype template constructor method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277007</commentid>
    <comment_count>8</comment_count>
      <attachid>67150</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-09 21:49:58 -0700</bug_when>
    <thetext>Created attachment 67150
Patch

Modified the code generator to take additional parameter to EnableAtRuntime so that we can reuse fileSystemEnabled().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277037</commentid>
    <comment_count>9</comment_count>
      <attachid>67159</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-09 22:57:49 -0700</bug_when>
    <thetext>Created attachment 67159
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278407</commentid>
    <comment_count>10</comment_count>
      <attachid>67159</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-13 12:45:28 -0700</bug_when>
    <thetext>Comment on attachment 67159
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=67159&amp;action=prettypatch

r=me. please address the comment before landing.

&gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:3395
&gt; +    if (length($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;}) &gt; 1) {
to keep this function consistent with all other helper functions, i think we should change its format to:

return &quot;RuntimeEnabledFeatures::&quot; . $codeGenerator-&gt;WK_lcfirst($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;}) . &quot;Enabled&quot; if ($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;} ne &quot;&quot;);
return &lt;the default name&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278487</commentid>
    <comment_count>11</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-13 14:36:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 67159 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67159&amp;action=prettypatch
&gt;
&gt; &gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:3395
&gt; &gt; +    if (length($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;}) &gt; 1) {
&gt; to keep this function consistent with all other helper functions, i think we should change its format to:
&gt; 
&gt; return &quot;RuntimeEnabledFeatures::&quot; . $codeGenerator-&gt;WK_lcfirst($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;}) . &quot;Enabled&quot; if ($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;} ne &quot;&quot;);
&gt; return &lt;the default name&gt;;

As extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;} has value 1 when it&apos;s set but has no values, I&apos;m going to make the if expr look like following.   (Could you ping me if it doesn&apos;t look good.)  Thanks,

&gt; return ... if ($signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;}  &amp;&amp; $signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;} != 1);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278559</commentid>
    <comment_count>12</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-13 16:15:11 -0700</bug_when>
    <thetext>Committed r67421: &lt;http://trac.webkit.org/changeset/67421&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66475</attachid>
            <date>2010-09-03 00:06:24 -0700</date>
            <delta_ts>2010-09-09 18:41:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45165-20100903000622.patch</filename>
            <type>text/plain</type>
            <size>2617</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OThhMGRiZWIyMDBjNDI5NmNiZmNkMDk2Mzk2MzU5MzY1ZTQzZTY5OS4uMjFkODJiYmI0NmRkNzAx
ZTExYTI0MzM3NDI3MzNkOThhZTU1YzQzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOS0wMiAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEZsYWdzIGNvbnN0cnVjdG9yIGlmIEZp
bGVTeXN0ZW0gQVBJIGlzIEVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MTY1CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0ZXN0cyB3aWxs
IGJlIGFkZGVkIHdoZW4gd2UgZnVsbHkgZXhwb3NlIHRoZSBpbnRlcmZhY2UuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZsYWdzRW5hYmxlZCk6CisgICAgICAgICog
ZmlsZWFwaS9GbGFncy5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDEw
LTA5LTAyICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBmYjQzZjNmN2I3MDU4M2Rk
N2M0OWE4OGU1ZjYyOTY0NjlmODFjMDBkLi5mMzAxNmY2NGFhNmFmYWU0YWFmYmM3ZDBjMmQzZDE2
ZWYxNzNlMGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgZmlsZVN5c3RlbUVuYWJsZWQoKSB7IHJldHVybiBpc0ZpbGVTeXN0ZW1FbmFibGVkOyB9CiAg
ICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNG
aWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHJlcXVlc3RG
aWxlU3lzdGVtRW5hYmxlZCgpIHsgcmV0dXJuIGlzRmlsZVN5c3RlbUVuYWJsZWQ7IH0KKyAgICBz
dGF0aWMgYm9vbCBmbGFnc0VuYWJsZWQoKSB7IHJldHVybiBpc0ZpbGVTeXN0ZW1FbmFibGVkOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9GbGFncy5p
ZGwgYi9XZWJDb3JlL2ZpbGVhcGkvRmxhZ3MuaWRsCmluZGV4IGNmZTczZDIyMTBhODBlNzJkNjdj
ZmIxOGE3OGU1YTc2ZjQ5MmI2OTIuLjdjMmE4MTY1ODEzNDhmZGVhM2YwZDZkZWNhMzliMDdmMzIz
NWJhMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9GbGFncy5pZGwKKysrIGIvV2ViQ29y
ZS9maWxlYXBpL0ZsYWdzLmlkbApAQCAtMzAsNyArMzAsOCBAQAogCiBtb2R1bGUgc3RvcmFnZSB7
CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0KKyAgICAg
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQKICAg
ICBdIEZsYWdzIHsKICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gQ1JFQVRFOwogICAgICAgICBh
dHRyaWJ1dGUgYm9vbGVhbiBFWENMVVNJVkU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGM3NzVhZTYwZDE3
OTk5NmMzNmM1ODgxNmQ5NjcxYTM0YWQ1OWQ3ZTIuLmU2YTNmYWVkYjU3ZjkwNTBkZjg1M2VkNmQx
ODExZjYwNjQwYTNjMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisr
KyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xODAsNiArMTgwLDggQEAgbW9kdWxl
IHdpbmRvdyB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CiAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwogICAgICAgICBbRW5h
YmxlZEF0UnVudGltZV0gdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0
eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3Rl
bUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKworICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZUF0UnVu
dGltZV0gRmxhZ3NDb25zdHJ1Y3RvciBGbGFnczsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFC
TEVfT1JJRU5UQVRJT05fRVZFTlRTKSAmJiBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67133</attachid>
            <date>2010-09-09 18:41:07 -0700</date>
            <delta_ts>2010-09-09 18:51:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45165-20100909184106.patch</filename>
            <type>text/plain</type>
            <size>12445</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OThhMGRiZWIyMDBjNDI5NmNiZmNkMDk2Mzk2MzU5MzY1ZTQzZTY5OS4uNGYxYjljYjlmN2U0ZmNh
ZWU2MTJmY2JhM2I1NzdiN2JiMjNhMWE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wOS0wOCAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEZsYWdzIGNvbnN0cnVjdG9yIGlmIEZp
bGVTeXN0ZW0gQVBJIGlzIEVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MTY1CisKKyAgICAgICAgQWxzbyBjaGFuZ2VkIEZsYWdzJyBhdHRy
aWJ1dGUgbmFtZXMgZnJvbSBVUFBFUkNBU0UgdG8gY2FtZWxDYXNlIHRvIHJlZmxlY3QgdGhlIHJl
Y2VudCBzcGVjIGNoYW5nZS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvZmls
ZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwjdGhlLWZsYWdzLWludGVyZmFjZQorCisgICAgICAg
IE5vIG5ldyB0ZXN0czsgdGVzdHMgd2lsbCBiZSBhZGRlZCB3aGVuIHdlIGZ1bGx5IGV4cG9zZSB0
aGUgaW50ZXJmYWNlLgorCisgICAgICAgICogZmlsZWFwaS9GbGFncy5pZGw6IENoYW5nZWQgYXR0
cmlidXRlIG5hbWVzIHRvIGNhbWVsQ2FzZS4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6
IEV4cG9zZWQgRmxhZ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG06IFVwZGF0ZWQgdGhlIFdLX2xjZmlyc3QgaGFjayB0byB3b3JrIGFy
b3VuZCBnZXR0ZXIgbWV0aG9kIGZvciAnY3JlYXRlJyAoY3JlYXRlKCkgc2hvdWxkIGJlIGF2b2lk
ZWQgYXMgaXQncyB3aWRlbHkgdXNlZCB0byBpbnN0YW50aWF0ZSBhbiBvYmplY3QpLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorCiAyMDEwLTA5LTAyICBQYXZlbCBQ
b2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCmluZGV4IGFkYzQ3ZDBkYjNmMDlhZmNjM2U2MDIxMGNkYTdjMjcxNDhmOTY0ZDQuLmVjNzYy
YjZjMmQxMzFmMTlkMzVkYjBkZTBlY2IyODNkNzE0OTNmNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0zNDQsMTAgKzM0NCw2IEBAIHN1YiBXS191Y2Zp
cnN0CiAgICAgbXkgJHJldCA9IHVjZmlyc3QoJHBhcmFtKTsKICAgICAkcmV0ID1+IHMvWG1sL1hN
TC8gaWYgJHJldCA9fiAvXlhtbFteYS16XS87CiAKLSAgICAjIEZvciBIVE1MNSBGaWxlU3lzdGVt
IEFQSSBGbGFncyBhdHRyaWJ1dGVzLgotICAgICRyZXQgPX4gcy9eQ1JFQVRFL0NyZWF0ZS8gaWYg
JHJldCA9fiAvXkNSRUFURSQvOwotICAgICRyZXQgPX4gcy9eRVhDTFVTSVZFL0V4Y2x1c2l2ZS8g
aWYgJHJldCA9fiAvXkVYQ0xVU0lWRSQvOwotCiAgICAgcmV0dXJuICRyZXQ7CiB9CiAKQEAgLTM2
NCw4ICszNjAsOSBAQCBzdWIgV0tfbGNmaXJzdAogICAgICRyZXQgPX4gcy94U0xUL3hzbHQvIGlm
ICRyZXQgPX4gL154U0xULzsKIAogICAgICMgRm9yIEhUTUw1IEZpbGVTeXN0ZW0gQVBJIEZsYWdz
IGF0dHJpYnV0ZXMuCi0gICAgJHJldCA9fiBzL15jUkVBVEUvaXNDcmVhdGUvIGlmICRyZXQgPX4g
L15jUkVBVEUkLzsKLSAgICAkcmV0ID1+IHMvXmVYQ0xVU0lWRS9pc0V4Y2x1c2l2ZS8gaWYgJHJl
dCA9fiAvXmVYQ0xVU0lWRSQvOworICAgICMgKGNyZWF0ZSBpcyB3aWRlbHkgdXNlZCB0byBpbnN0
YW50aWF0ZSBhbiBvYmplY3QgYW5kIG11c3QgYmUgYXZvaWRlZC4pCisgICAgJHJldCA9fiBzL15j
cmVhdGUvaXNDcmVhdGUvIGlmICRyZXQgPX4gL15jcmVhdGUkLzsKKyAgICAkcmV0ID1+IHMvXmV4
Y2x1c2l2ZS9pc0V4Y2x1c2l2ZS8gaWYgJHJldCA9fiAvXmV4Y2x1c2l2ZSQvOwogCiAgICAgcmV0
dXJuICRyZXQ7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5jcHAKaW5kZXggODgyZTYzM2RhYTZkMjFiNDdhOTljYWY5NzZlZTQyNzFi
ZjM3Y2E2Ni4uYWI3NTdhNzJiMzcwMjc0MWRkZjI0MDE1MzdlMjNmYWZjYzhmZGM0MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNw
cApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6c2V0WE1MT2JqQXR0cihj
b25zdCBXZWJET01UZXN0T2JqJiBuZXdYTUxPYmpBdHRyKQogICAgIGltcGwoKS0+c2V0WE1MT2Jq
QXR0cih0b1dlYkNvcmUobmV3WE1MT2JqQXR0cikpOwogfQogCi1ib29sIFdlYkRPTVRlc3RPYmo6
OkNSRUFURSgpIGNvbnN0Citib29sIFdlYkRPTVRlc3RPYmo6OmNyZWF0ZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpbXBsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwNywxMiArMjA3LDEy
IEBAIGJvb2wgV2ViRE9NVGVzdE9iajo6Q1JFQVRFKCkgY29uc3QKICAgICByZXR1cm4gaW1wbCgp
LT5pc0NyZWF0ZSgpOwogfQogCi12b2lkIFdlYkRPTVRlc3RPYmo6OnNldENSRUFURShib29sIG5l
d0NSRUFURSkKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0Q3JlYXRlKGJvb2wgbmV3Q3JlYXRlKQog
ewogICAgIGlmICghaW1wbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbXBsKCktPnNldENy
ZWF0ZShuZXdDUkVBVEUpOworICAgIGltcGwoKS0+c2V0Q3JlYXRlKG5ld0NyZWF0ZSk7CiB9CiAK
IFdlYkRPTVN0cmluZyBXZWJET01UZXN0T2JqOjpyZWZsZWN0ZWRTdHJpbmdBdHRyKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmggYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5o
CmluZGV4IDc3MGNlNTEwYmI1ZDhmMWY2MWFhZWM5MGEwZmNiODdlMzhlZDczYzkuLjI5ODcxNGYx
YzgwZjkwNjdkOGZkMzkwYTg4N2FkMTYyOTUxMmQzM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAtNzIsOCArNzIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUZXN0T2JqQXR0cihjb25zdCBXZWJET01UZXN0T2JqJik7CiAg
ICAgV2ViRE9NVGVzdE9iaiBYTUxPYmpBdHRyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRYTUxPYmpB
dHRyKGNvbnN0IFdlYkRPTVRlc3RPYmomKTsKLSAgICBib29sIENSRUFURSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Q1JFQVRFKGJvb2wpOworICAgIGJvb2wgY3JlYXRlKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRDcmVhdGUoYm9vbCk7CiAgICAgV2ViRE9NU3RyaW5nIHJlZmxlY3RlZFN0cmluZ0F0dHIo
KSBjb25zdDsKICAgICB2b2lkIHNldFJlZmxlY3RlZFN0cmluZ0F0dHIoY29uc3QgV2ViRE9NU3Ry
aW5nJik7CiAgICAgaW50IHJlZmxlY3RlZEludGVncmFsQXR0cigpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMmEzOWFjNGUz
MTM0NjVkN2QzZTcwMTZhMTIwOTliM2FmMjg4YzIxNS4uNDUyMmM3ODliN2ExYjY3YTYxNGQ4MjQ1
N2YwNjNlMmI2OTA4MGVkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1szNF0gPQogICAgIHsgInN0cmluZ0F0dHIiLCBEb250
RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9ialN0cmluZ0F0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU3RyaW5nQXR0ciBU
SFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJ0ZXN0T2JqQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
VGVzdE9iakF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIgVEhVTktfR0VO
RVJBVE9SKDApIH0sCiAgICAgeyAiWE1MT2JqQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqWE1MT2JqQXR0
ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9
LAotICAgIHsgIkNSRUFURSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ3JlYXRlKSwgKGludHB0cl90KXNldEpT
VGVzdE9iakNyZWF0ZSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyAgICB7ICJjcmVhdGUiLCBEb250
RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9iakNyZWF0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDcmVhdGUgVEhVTktfR0VO
RVJBVE9SKDApIH0sCiAgICAgeyAicmVmbGVjdGVkU3RyaW5nQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
UmVmbGVjdGVkU3RyaW5nQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJp
bmdBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgInJlZmxlY3RlZEludGVncmFsQXR0
ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKSwgKGludHB0cl90KXNldEpT
VGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7
ICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0
dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIgVEhVTktfR0VO
RVJBVE9SKDApIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmouaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5oCmluZGV4IDRhMGYwNjU2N2U2YjBkZDM5YzZmMDgwY2Q4YWE4OGZkYzhmYzM2MzIu
LmViOGNkOTY1Yzg2MGVmZDk1ZTA4MWU4ZGE5ZDdjYzMwYzQwNzY5NGUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC02NCw4ICs2NCw4
IEBAIGVudW0gewogLSAodm9pZClzZXRUZXN0T2JqQXR0cjooRE9NVGVzdE9iaiAqKW5ld1Rlc3RP
YmpBdHRyOwogLSAoRE9NVGVzdE9iaiAqKVhNTE9iakF0dHI7CiAtICh2b2lkKXNldFhNTE9iakF0
dHI6KERPTVRlc3RPYmogKiluZXdYTUxPYmpBdHRyOwotLSAoQk9PTClDUkVBVEU7Ci0tICh2b2lk
KXNldENSRUFURTooQk9PTCluZXdDUkVBVEU7CistIChCT09MKWNyZWF0ZTsKKy0gKHZvaWQpc2V0
Q3JlYXRlOihCT09MKW5ld0NyZWF0ZTsKIC0gKE5TU3RyaW5nICopcmVmbGVjdGVkU3RyaW5nQXR0
cjsKIC0gKHZvaWQpc2V0UmVmbGVjdGVkU3RyaW5nQXR0cjooTlNTdHJpbmcgKiluZXdSZWZsZWN0
ZWRTdHJpbmdBdHRyOwogLSAoaW50KXJlZmxlY3RlZEludGVncmFsQXR0cjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCAwMWZjZjM0
ZTlkNjljNTNiYzUxNzdjZjYwOWQyMjYwMDU4M2RkYjc5Li40OTg0YTYwMzFkN2JhZWUwNGZhM2E4
YjgzMDliYTk4NGZjOTIzMjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC0xNjgsMTYgKzE2OCwxNiBAQAogICAgIElNUEwtPnNl
dFhNTE9iakF0dHIoY29yZShuZXdYTUxPYmpBdHRyKSk7CiB9CiAKLS0gKEJPT0wpQ1JFQVRFCist
IChCT09MKWNyZWF0ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKICAgICByZXR1cm4gSU1QTC0+aXNDcmVhdGUoKTsKIH0KIAotLSAodm9pZClzZXRDUkVBVEU6
KEJPT0wpbmV3Q1JFQVRFCistICh2b2lkKXNldENyZWF0ZTooQk9PTCluZXdDcmVhdGUKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0Q3Jl
YXRlKG5ld0NSRUFURSk7CisgICAgSU1QTC0+c2V0Q3JlYXRlKG5ld0NyZWF0ZSk7CiB9CiAKIC0g
KE5TU3RyaW5nICopcmVmbGVjdGVkU3RyaW5nQXR0cgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAppbmRleCA5NGY3MzRiYzdmMTQ1YmY4YTI2ZTkwOGFkZjFhYzBhNjk2
MzRjOGMzLi40ZDMzYWI1Y2MxMmEzMzZiYmFiMzEyNDdkMDEwYWQxNjczNTg5Nzk4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNDQsNyArNDQsNyBAQCBt
b2R1bGUgdGVzdCB7CiAgICAgICAgIEpTLCBWOAogICAgICAgICAvLyBXS191Y2ZpcnN0LCBXS19s
Y2ZpcnN0IGV4Y2VwdGlvbmFsIGNhc2VzLgogICAgICAgICBhdHRyaWJ1dGUgVGVzdE9iaiAgICAg
ICAgICAgICAgICAgIFhNTE9iakF0dHI7Ci0gICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAg
ICAgICAgICAgICAgQ1JFQVRFOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAg
ICAgICAgIGNyZWF0ZTsKIAogICAgICAgICAvLyBSZWZsZWN0ZWQgRE9NIGF0dHJpYnV0ZXMKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgcmVmbGVjdGVkU3RyaW5nQXR0cjsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4
IDUyODg3ZDFjYTdkNDA5ZWM4MDEwOGE5MTMwNmI4YjY5Mjk2NmUwMWQuLjE1MTMyNmNmZTQ1NzUz
OGIzZmZiMjczZGQ4Y2I3NWZlNzNlODQ5Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTcyLDE2ICsxNzIsMTYgQEAgc3RhdGljIHZv
aWQgWE1MT2JqQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWUKICAgICByZXR1cm47CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gQ1JFQVRFQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3Jl
YXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNSRUFURS5fZ2V0
Iik7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jcmVhdGUuX2dldCIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJu
IHY4Qm9vbGVhbihpbXAtPmlzQ3JlYXRlKCkpOwogfQogCi1zdGF0aWMgdm9pZCBDUkVBVEVBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3N0YXRpYyB2b2lkIGNyZWF0ZUF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygi
RE9NLlRlc3RPYmouQ1JFQVRFLl9zZXQiKTsKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNy
ZWF0ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgaW1w
LT5zZXRDcmVhdGUodik7CkBAIC0xMDExLDggKzEwMTEsOCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICB7InRlc3RPYmpBdHRyIiwgVGVzdE9i
akludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ1hNTE9i
akF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7IlhNTE9iakF0dHIi
LCBUZXN0T2JqSW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6
OlhNTE9iakF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKLSAgICAvLyBBdHRyaWJ1dGUg
J0NSRUFURScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiQ1JFQVRFIiwg
VGVzdE9iakludGVybmFsOjpDUkVBVEVBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OkNSRUFU
RUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnY3JlYXRlJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJjcmVhdGUiLCBUZXN0T2JqSW50
ZXJuYWw6OmNyZWF0ZUF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRl
ciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRTdHJpbmdBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQogICAgIHsicmVmbGVjdGVk
U3RyaW5nQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0
ZXIsIFRlc3RPYmpJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkSW50ZWdyYWxBdHRyJyAoVHlw
ZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9m
aWxlYXBpL0ZsYWdzLmlkbCBiL1dlYkNvcmUvZmlsZWFwaS9GbGFncy5pZGwKaW5kZXggY2ZlNzNk
MjIxMGE4MGU3MmQ2N2NmYjE4YTc4ZTVhNzZmNDkyYjY5Mi4uMjk2NThhMWZlNjY0NGQ3YzkyMTk2
NmJkNWY4NzkyZGZhYjAzZjEzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlk
bAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmxhZ3MuaWRsCkBAIC0zMCw5ICszMCwxMCBAQAogCiBt
b2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklM
RV9TWVNURU0KKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIENhbkJl
Q29uc3RydWN0ZWQKICAgICBdIEZsYWdzIHsKLSAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gQ1JF
QVRFOwotICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBFWENMVVNJVkU7CisgICAgICAgIGF0dHJp
YnV0ZSBib29sZWFuIGNyZWF0ZTsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZXhjbHVzaXZl
OwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGM3NzVhZTYwZDE3OTk5NmMzNmM1ODgxNmQ5
NjcxYTM0YWQ1OWQ3ZTIuLmY4MjYzMzRhOGYyYTkyNDYxMzNlZGVmNjdjMmU0ZTI2ZmVjOTdjYTgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCkBAIC0xODAsNiArMTgwLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwogICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0g
dm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxv
bmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKKworICAgICAgICBhdHRyaWJ1dGUgRmxhZ3NDb25zdHJ1Y3RvciBGbGFnczsKICNl
bmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTKSAmJiBFTkFCTEVf
T1JJRU5UQVRJT05fRVZFTlRTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67135</attachid>
            <date>2010-09-09 18:51:44 -0700</date>
            <delta_ts>2010-09-09 20:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45165-20100909185142.patch</filename>
            <type>text/plain</type>
            <size>13247</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OThhMGRiZWIyMDBjNDI5NmNiZmNkMDk2Mzk2MzU5MzY1ZTQzZTY5OS4uOWI0MjlkNzZjYzk4MGMw
M2MwNmJjNWIwZTEyZmQ2NmQxZjIxYmFkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0wOS0wOCAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEZsYWdzIGNvbnN0cnVjdG9yIGlmIEZp
bGVTeXN0ZW0gQVBJIGlzIEVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MTY1CisKKyAgICAgICAgQWxzbyBjaGFuZ2VkIEZsYWdzJyBhdHRy
aWJ1dGUgbmFtZXMgZnJvbSBVUFBFUkNBU0UgdG8gY2FtZWxDYXNlIHRvIHJlZmxlY3QgdGhlIHJl
Y2VudCBzcGVjIGNoYW5nZS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvZmls
ZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwjdGhlLWZsYWdzLWludGVyZmFjZQorCisgICAgICAg
IE5vIG5ldyB0ZXN0czsgdGVzdHMgd2lsbCBiZSBhZGRlZCB3aGVuIHdlIGZ1bGx5IGV4cG9zZSB0
aGUgaW50ZXJmYWNlLgorCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpm
bGFnc0VuYWJsZWQpOgorICAgICAgICAqIGZpbGVhcGkvRmxhZ3MuaWRsOiBDaGFuZ2VkIGF0dHJp
YnV0ZSBuYW1lcyB0byBjYW1lbENhc2UuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBF
eHBvc2VkIEZsYWdzIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOiBVcGRhdGVkIHRoZSBXS19sY2ZpcnN0IGhhY2sgdG8gd29yayBhcm91
bmQgZ2V0dGVyIG1ldGhvZCBmb3IgJ2NyZWF0ZScgKGNyZWF0ZSgpIHNob3VsZCBiZSBhdm9pZGVk
IGFzIGl0J3Mgd2lkZWx5IHVzZWQgdG8gaW5zdGFudGlhdGUgYW4gb2JqZWN0KS4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9j
bGFzc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKwogMjAxMC0wOS0wMiAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZ
dXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggZmI0M2YzZjdiNzA1ODNkZDdjNDlhODhlNWY2Mjk2NDY5
ZjgxYzAwZC4uZjMwMTZmNjRhYTZhZmFlNGFhZmJjN2QwYzJkM2QxNmVmMTczZTBkNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBA
IC0xMzksNiArMTM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGZpbGVTeXN0ZW1FbmFi
bGVkKCkgeyByZXR1cm4gaXNGaWxlU3lzdGVtRW5hYmxlZDsgfQogICAgIHN0YXRpYyB2b2lkIHNl
dEZpbGVTeXN0ZW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRmlsZVN5c3RlbUVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCByZXF1ZXN0RmlsZVN5c3RlbUVuYWJsZWQo
KSB7IHJldHVybiBpc0ZpbGVTeXN0ZW1FbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgZmxhZ3NF
bmFibGVkKCkgeyByZXR1cm4gaXNGaWxlU3lzdGVtRW5hYmxlZDsgfQogI2VuZGlmCiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5w
bSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGFkYzQ3
ZDBkYjNmMDlhZmNjM2U2MDIxMGNkYTdjMjcxNDhmOTY0ZDQuLmVjNzYyYjZjMmQxMzFmMTlkMzVk
YjBkZTBlY2IyODNkNzE0OTNmNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCkBAIC0zNDQsMTAgKzM0NCw2IEBAIHN1YiBXS191Y2ZpcnN0CiAgICAgbXkgJHJl
dCA9IHVjZmlyc3QoJHBhcmFtKTsKICAgICAkcmV0ID1+IHMvWG1sL1hNTC8gaWYgJHJldCA9fiAv
XlhtbFteYS16XS87CiAKLSAgICAjIEZvciBIVE1MNSBGaWxlU3lzdGVtIEFQSSBGbGFncyBhdHRy
aWJ1dGVzLgotICAgICRyZXQgPX4gcy9eQ1JFQVRFL0NyZWF0ZS8gaWYgJHJldCA9fiAvXkNSRUFU
RSQvOwotICAgICRyZXQgPX4gcy9eRVhDTFVTSVZFL0V4Y2x1c2l2ZS8gaWYgJHJldCA9fiAvXkVY
Q0xVU0lWRSQvOwotCiAgICAgcmV0dXJuICRyZXQ7CiB9CiAKQEAgLTM2NCw4ICszNjAsOSBAQCBz
dWIgV0tfbGNmaXJzdAogICAgICRyZXQgPX4gcy94U0xUL3hzbHQvIGlmICRyZXQgPX4gL154U0xU
LzsKIAogICAgICMgRm9yIEhUTUw1IEZpbGVTeXN0ZW0gQVBJIEZsYWdzIGF0dHJpYnV0ZXMuCi0g
ICAgJHJldCA9fiBzL15jUkVBVEUvaXNDcmVhdGUvIGlmICRyZXQgPX4gL15jUkVBVEUkLzsKLSAg
ICAkcmV0ID1+IHMvXmVYQ0xVU0lWRS9pc0V4Y2x1c2l2ZS8gaWYgJHJldCA9fiAvXmVYQ0xVU0lW
RSQvOworICAgICMgKGNyZWF0ZSBpcyB3aWRlbHkgdXNlZCB0byBpbnN0YW50aWF0ZSBhbiBvYmpl
Y3QgYW5kIG11c3QgYmUgYXZvaWRlZC4pCisgICAgJHJldCA9fiBzL15jcmVhdGUvaXNDcmVhdGUv
IGlmICRyZXQgPX4gL15jcmVhdGUkLzsKKyAgICAkcmV0ID1+IHMvXmV4Y2x1c2l2ZS9pc0V4Y2x1
c2l2ZS8gaWYgJHJldCA9fiAvXmV4Y2x1c2l2ZSQvOwogCiAgICAgcmV0dXJuICRyZXQ7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9i
ai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5j
cHAKaW5kZXggODgyZTYzM2RhYTZkMjFiNDdhOTljYWY5NzZlZTQyNzFiZjM3Y2E2Ni4uYWI3NTdh
NzJiMzcwMjc0MWRkZjI0MDE1MzdlMjNmYWZjYzhmZGM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMTk5LDcgKzE5
OSw3IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6c2V0WE1MT2JqQXR0cihjb25zdCBXZWJET01UZXN0
T2JqJiBuZXdYTUxPYmpBdHRyKQogICAgIGltcGwoKS0+c2V0WE1MT2JqQXR0cih0b1dlYkNvcmUo
bmV3WE1MT2JqQXR0cikpOwogfQogCi1ib29sIFdlYkRPTVRlc3RPYmo6OkNSRUFURSgpIGNvbnN0
Citib29sIFdlYkRPTVRlc3RPYmo6OmNyZWF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFpbXBsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwNywxMiArMjA3LDEyIEBAIGJvb2wgV2ViRE9N
VGVzdE9iajo6Q1JFQVRFKCkgY29uc3QKICAgICByZXR1cm4gaW1wbCgpLT5pc0NyZWF0ZSgpOwog
fQogCi12b2lkIFdlYkRPTVRlc3RPYmo6OnNldENSRUFURShib29sIG5ld0NSRUFURSkKK3ZvaWQg
V2ViRE9NVGVzdE9iajo6c2V0Q3JlYXRlKGJvb2wgbmV3Q3JlYXRlKQogewogICAgIGlmICghaW1w
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbXBsKCktPnNldENyZWF0ZShuZXdDUkVBVEUp
OworICAgIGltcGwoKS0+c2V0Q3JlYXRlKG5ld0NyZWF0ZSk7CiB9CiAKIFdlYkRPTVN0cmluZyBX
ZWJET01UZXN0T2JqOjpyZWZsZWN0ZWRTdHJpbmdBdHRyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmluZGV4IDc3MGNlNTEw
YmI1ZDhmMWY2MWFhZWM5MGEwZmNiODdlMzhlZDczYzkuLjI5ODcxNGYxYzgwZjkwNjdkOGZkMzkw
YTg4N2FkMTYyOTUxMmQzM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUZXN0T2JqQXR0cihjb25zdCBXZWJET01UZXN0T2JqJik7CiAgICAgV2ViRE9NVGVzdE9i
aiBYTUxPYmpBdHRyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRYTUxPYmpBdHRyKGNvbnN0IFdlYkRP
TVRlc3RPYmomKTsKLSAgICBib29sIENSRUFURSgpIGNvbnN0OwotICAgIHZvaWQgc2V0Q1JFQVRF
KGJvb2wpOworICAgIGJvb2wgY3JlYXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDcmVhdGUoYm9v
bCk7CiAgICAgV2ViRE9NU3RyaW5nIHJlZmxlY3RlZFN0cmluZ0F0dHIoKSBjb25zdDsKICAgICB2
b2lkIHNldFJlZmxlY3RlZFN0cmluZ0F0dHIoY29uc3QgV2ViRE9NU3RyaW5nJik7CiAgICAgaW50
IHJlZmxlY3RlZEludGVncmFsQXR0cigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMmEzOWFjNGUzMTM0NjVkN2QzZTcwMTZh
MTIwOTliM2FmMjg4YzIxNS4uNDUyMmM3ODliN2ExYjY3YTYxNGQ4MjQ1N2YwNjNlMmI2OTA4MGVk
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpU
YWJsZVZhbHVlc1szNF0gPQogICAgIHsgInN0cmluZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmlu
Z0F0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU3RyaW5nQXR0ciBUSFVOS19HRU5FUkFUT1Io
MCkgfSwKICAgICB7ICJ0ZXN0T2JqQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVGVzdE9iakF0dHIpLCAo
aW50cHRyX3Qpc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCiAg
ICAgeyAiWE1MT2JqQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqWE1MT2JqQXR0ciksIChpbnRwdHJfdClz
ZXRKU1Rlc3RPYmpYTUxPYmpBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAotICAgIHsgIkNSRUFU
RSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqQ3JlYXRlKSwgKGludHB0cl90KXNldEpTVGVzdE9iakNyZWF0ZSBU
SFVOS19HRU5FUkFUT1IoMCkgfSwKKyAgICB7ICJjcmVhdGUiLCBEb250RGVsZXRlLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNyZWF0
ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDcmVhdGUgVEhVTktfR0VORVJBVE9SKDApIH0sCiAg
ICAgeyAicmVmbGVjdGVkU3RyaW5nQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkU3RyaW5n
QXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyIFRIVU5LX0dF
TkVSQVRPUigwKSB9LAogICAgIHsgInJlZmxlY3RlZEludGVncmFsQXR0ciIsIERvbnREZWxldGUs
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialJlZmxlY3Rl
ZEludGVncmFsQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJyZWZsZWN0ZWRCb29s
ZWFuQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpLCAoaW50cHRyX3Qp
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4
IDRhMGYwNjU2N2U2YjBkZDM5YzZmMDgwY2Q4YWE4OGZkYzhmYzM2MzIuLmViOGNkOTY1Yzg2MGVm
ZDk1ZTA4MWU4ZGE5ZDdjYzMwYzQwNzY5NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC02NCw4ICs2NCw4IEBAIGVudW0gewogLSAo
dm9pZClzZXRUZXN0T2JqQXR0cjooRE9NVGVzdE9iaiAqKW5ld1Rlc3RPYmpBdHRyOwogLSAoRE9N
VGVzdE9iaiAqKVhNTE9iakF0dHI7CiAtICh2b2lkKXNldFhNTE9iakF0dHI6KERPTVRlc3RPYmog
KiluZXdYTUxPYmpBdHRyOwotLSAoQk9PTClDUkVBVEU7Ci0tICh2b2lkKXNldENSRUFURTooQk9P
TCluZXdDUkVBVEU7CistIChCT09MKWNyZWF0ZTsKKy0gKHZvaWQpc2V0Q3JlYXRlOihCT09MKW5l
d0NyZWF0ZTsKIC0gKE5TU3RyaW5nICopcmVmbGVjdGVkU3RyaW5nQXR0cjsKIC0gKHZvaWQpc2V0
UmVmbGVjdGVkU3RyaW5nQXR0cjooTlNTdHJpbmcgKiluZXdSZWZsZWN0ZWRTdHJpbmdBdHRyOwog
LSAoaW50KXJlZmxlY3RlZEludGVncmFsQXR0cjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCAwMWZjZjM0ZTlkNjljNTNiYzUxNzdj
ZjYwOWQyMjYwMDU4M2RkYjc5Li40OTg0YTYwMzFkN2JhZWUwNGZhM2E4YjgzMDliYTk4NGZjOTIz
MjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLm1tCkBAIC0xNjgsMTYgKzE2OCwxNiBAQAogICAgIElNUEwtPnNldFhNTE9iakF0dHIoY29y
ZShuZXdYTUxPYmpBdHRyKSk7CiB9CiAKLS0gKEJPT0wpQ1JFQVRFCistIChCT09MKWNyZWF0ZQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICByZXR1cm4g
SU1QTC0+aXNDcmVhdGUoKTsKIH0KIAotLSAodm9pZClzZXRDUkVBVEU6KEJPT0wpbmV3Q1JFQVRF
CistICh2b2lkKXNldENyZWF0ZTooQk9PTCluZXdDcmVhdGUKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0Q3JlYXRlKG5ld0NSRUFURSk7
CisgICAgSU1QTC0+c2V0Q3JlYXRlKG5ld0NyZWF0ZSk7CiB9CiAKIC0gKE5TU3RyaW5nICopcmVm
bGVjdGVkU3RyaW5nQXR0cgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAppbmRleCA5NGY3MzRiYzdmMTQ1YmY4YTI2ZTkwOGFkZjFhYzBhNjk2MzRjOGMzLi40ZDMzYWI1
Y2MxMmEzMzZiYmFiMzEyNDdkMDEwYWQxNjczNTg5Nzk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNDQsNyArNDQsNyBAQCBtb2R1bGUgdGVzdCB7CiAg
ICAgICAgIEpTLCBWOAogICAgICAgICAvLyBXS191Y2ZpcnN0LCBXS19sY2ZpcnN0IGV4Y2VwdGlv
bmFsIGNhc2VzLgogICAgICAgICBhdHRyaWJ1dGUgVGVzdE9iaiAgICAgICAgICAgICAgICAgIFhN
TE9iakF0dHI7Ci0gICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgICAgICAgICAgQ1JF
QVRFOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgICAgICAgIGNyZWF0ZTsK
IAogICAgICAgICAvLyBSZWZsZWN0ZWQgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRl
IFtSZWZsZWN0XSBET01TdHJpbmcgcmVmbGVjdGVkU3RyaW5nQXR0cjsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDUyODg3ZDFjYTdkNDA5
ZWM4MDEwOGE5MTMwNmI4YjY5Mjk2NmUwMWQuLjE1MTMyNmNmZTQ1NzUzOGIzZmZiMjczZGQ4Y2I3
NWZlNzNlODQ5Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcApAQCAtMTcyLDE2ICsxNzIsMTYgQEAgc3RhdGljIHZvaWQgWE1MT2JqQXR0ckF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWUK
ICAgICByZXR1cm47CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gQ1JFQVRFQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNSRUFURS5fZ2V0Iik7CisgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5jcmVhdGUuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4Qm9vbGVhbihpbXAt
PmlzQ3JlYXRlKCkpOwogfQogCi1zdGF0aWMgdm9pZCBDUkVBVEVBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3N0YXRpYyB2b2lkIGNyZWF0ZUF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouQ1JF
QVRFLl9zZXQiKTsKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNyZWF0ZS5fc2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgaW1wLT5zZXRDcmVhdGUodik7
CkBAIC0xMDExLDggKzEwMTEsOCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
T2JqQXR0cnNbXSA9IHsKICAgICB7InRlc3RPYmpBdHRyIiwgVGVzdE9iakludGVybmFsOjp0ZXN0
T2JqQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVy
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ1hNTE9iakF0dHInIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7IlhNTE9iakF0dHIiLCBUZXN0T2JqSW50ZXJu
YWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OlhNTE9iakF0dHJBdHRy
U2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKLSAgICAvLyBBdHRyaWJ1dGUgJ0NSRUFURScgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiQ1JFQVRFIiwgVGVzdE9iakludGVybmFs
OjpDUkVBVEVBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OkNSRUFURUF0dHJTZXR0ZXIsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnY3JlYXRlJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCisgICAgeyJjcmVhdGUiLCBUZXN0T2JqSW50ZXJuYWw6OmNyZWF0ZUF0
dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQogICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRl
c3RPYmpJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRl
cm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkSW50ZWdyYWxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ1JlZmxlY3QnKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlk
bCBiL1dlYkNvcmUvZmlsZWFwaS9GbGFncy5pZGwKaW5kZXggY2ZlNzNkMjIxMGE4MGU3MmQ2N2Nm
YjE4YTc4ZTVhNzZmNDkyYjY5Mi4uMjk2NThhMWZlNjY0NGQ3YzkyMTk2NmJkNWY4NzkyZGZhYjAz
ZjEzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlkbAorKysgYi9XZWJDb3Jl
L2ZpbGVhcGkvRmxhZ3MuaWRsCkBAIC0zMCw5ICszMCwxMCBAQAogCiBtb2R1bGUgc3RvcmFnZSB7
CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0KKyAgICAg
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQKICAg
ICBdIEZsYWdzIHsKLSAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gQ1JFQVRFOwotICAgICAgICBh
dHRyaWJ1dGUgYm9vbGVhbiBFWENMVVNJVkU7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGNy
ZWF0ZTsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZXhjbHVzaXZlOwogICAgIH07CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCmluZGV4IGM3NzVhZTYwZDE3OTk5NmMzNmM1ODgxNmQ5NjcxYTM0YWQ1OWQ3ZTIu
LmJjMDkzYmQzMGUwYWI2ZDNkYjk1Mzg3YWQ2ODg0NzE2ZGM4MzMxMDEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CkBAIC0xODAsNiArMTgwLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBF
UlNJU1RFTlQgPSAxOwogICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCByZXF1ZXN0Rmls
ZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0Nh
bGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4g
W0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKworICAg
ICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVdIEZsYWdzQ29uc3RydWN0b3IgRmxhZ3M7
CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUykgJiYgRU5B
QkxFX09SSUVOVEFUSU9OX0VWRU5UUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67147</attachid>
            <date>2010-09-09 20:22:12 -0700</date>
            <delta_ts>2010-09-09 21:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45165-20100909202210.patch</filename>
            <type>text/plain</type>
            <size>14056</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OThhMGRiZWIyMDBjNDI5NmNiZmNkMDk2Mzk2MzU5MzY1ZTQzZTY5OS4uZTE5ZWI1YTNjMWE2ZTJi
MzM1YmJlYTY1M2I1OGM5ZmM1MDkyOWI1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wOS0wOCAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEZsYWdzIGNvbnN0cnVjdG9yIGlmIEZp
bGVTeXN0ZW0gQVBJIGlzIEVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MTY1CisKKyAgICAgICAgQWxzbyBjaGFuZ2VkIEZsYWdzJyBhdHRy
aWJ1dGUgbmFtZXMgZnJvbSBVUFBFUkNBU0UgdG8gY2FtZWxDYXNlIHRvIHJlZmxlY3QgdGhlIHJl
Y2VudCBzcGVjIGNoYW5nZS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvZmls
ZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwjdGhlLWZsYWdzLWludGVyZmFjZQorCisgICAgICAg
IE5vIG5ldyB0ZXN0czsgdGVzdHMgd2lsbCBiZSBhZGRlZCB3aGVuIHdlIGZ1bGx5IGV4cG9zZSB0
aGUgaW50ZXJmYWNlLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dDdXN0b20u
Y3BwOiBBZGRlZCBjdXN0b20gZ2V0dGVyIGZvciBGbGFnc0NvbnN0cnVjdG9yLgorICAgICAgICAq
IGZpbGVhcGkvRmxhZ3MuaWRsOiBDaGFuZ2VkIGF0dHJpYnV0ZSBuYW1lcyB0byBjYW1lbENhc2Uu
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBFeHBvc2VkIEZsYWdzIGNvbnN0cnVjdG9y
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOiBVcGRhdGVk
IHRoZSBXS19sY2ZpcnN0IGhhY2sgdG8gd29yayBhcm91bmQgZ2V0dGVyIG1ldGhvZCBmb3IgJ2Ny
ZWF0ZScgKGNyZWF0ZSgpIHNob3VsZCBiZSBhdm9pZGVkIGFzIGl0J3Mgd2lkZWx5IHVzZWQgdG8g
aW5zdGFudGlhdGUgYW4gb2JqZWN0KS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcDoKKwogMjAxMC0wOS0wMiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCBhZGM0N2QwZGIzZjA5YWZj
YzNlNjAyMTBjZGE3YzI3MTQ4Zjk2NGQ0Li5lYzc2MmI2YzJkMTMxZjE5ZDM1ZGIwZGUwZWNiMjgz
ZDcxNDkzZjViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpA
QCAtMzQ0LDEwICszNDQsNiBAQCBzdWIgV0tfdWNmaXJzdAogICAgIG15ICRyZXQgPSB1Y2ZpcnN0
KCRwYXJhbSk7CiAgICAgJHJldCA9fiBzL1htbC9YTUwvIGlmICRyZXQgPX4gL15YbWxbXmEtel0v
OwogCi0gICAgIyBGb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkgRmxhZ3MgYXR0cmlidXRlcy4KLSAg
ICAkcmV0ID1+IHMvXkNSRUFURS9DcmVhdGUvIGlmICRyZXQgPX4gL15DUkVBVEUkLzsKLSAgICAk
cmV0ID1+IHMvXkVYQ0xVU0lWRS9FeGNsdXNpdmUvIGlmICRyZXQgPX4gL15FWENMVVNJVkUkLzsK
LQogICAgIHJldHVybiAkcmV0OwogfQogCkBAIC0zNjQsOCArMzYwLDkgQEAgc3ViIFdLX2xjZmly
c3QKICAgICAkcmV0ID1+IHMveFNMVC94c2x0LyBpZiAkcmV0ID1+IC9eeFNMVC87CiAKICAgICAj
IEZvciBIVE1MNSBGaWxlU3lzdGVtIEFQSSBGbGFncyBhdHRyaWJ1dGVzLgotICAgICRyZXQgPX4g
cy9eY1JFQVRFL2lzQ3JlYXRlLyBpZiAkcmV0ID1+IC9eY1JFQVRFJC87Ci0gICAgJHJldCA9fiBz
L15lWENMVVNJVkUvaXNFeGNsdXNpdmUvIGlmICRyZXQgPX4gL15lWENMVVNJVkUkLzsKKyAgICAj
IChjcmVhdGUgaXMgd2lkZWx5IHVzZWQgdG8gaW5zdGFudGlhdGUgYW4gb2JqZWN0IGFuZCBtdXN0
IGJlIGF2b2lkZWQuKQorICAgICRyZXQgPX4gcy9eY3JlYXRlL2lzQ3JlYXRlLyBpZiAkcmV0ID1+
IC9eY3JlYXRlJC87CisgICAgJHJldCA9fiBzL15leGNsdXNpdmUvaXNFeGNsdXNpdmUvIGlmICRy
ZXQgPX4gL15leGNsdXNpdmUkLzsKIAogICAgIHJldHVybiAkcmV0OwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDg4
MmU2MzNkYWE2ZDIxYjQ3YTk5Y2FmOTc2ZWU0MjcxYmYzN2NhNjYuLmFiNzU3YTcyYjM3MDI3NDFk
ZGYyNDAxNTM3ZTIzZmFmY2M4ZmRjNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lk
IFdlYkRPTVRlc3RPYmo6OnNldFhNTE9iakF0dHIoY29uc3QgV2ViRE9NVGVzdE9iaiYgbmV3WE1M
T2JqQXR0cikKICAgICBpbXBsKCktPnNldFhNTE9iakF0dHIodG9XZWJDb3JlKG5ld1hNTE9iakF0
dHIpKTsKIH0KIAotYm9vbCBXZWJET01UZXN0T2JqOjpDUkVBVEUoKSBjb25zdAorYm9vbCBXZWJE
T01UZXN0T2JqOjpjcmVhdGUoKSBjb25zdAogewogICAgIGlmICghaW1wbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMDcsMTIgKzIwNywxMiBAQCBib29sIFdlYkRPTVRlc3RPYmo6OkNS
RUFURSgpIGNvbnN0CiAgICAgcmV0dXJuIGltcGwoKS0+aXNDcmVhdGUoKTsKIH0KIAotdm9pZCBX
ZWJET01UZXN0T2JqOjpzZXRDUkVBVEUoYm9vbCBuZXdDUkVBVEUpCit2b2lkIFdlYkRPTVRlc3RP
Ymo6OnNldENyZWF0ZShib29sIG5ld0NyZWF0ZSkKIHsKICAgICBpZiAoIWltcGwoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLT5zZXRDcmVhdGUobmV3Q1JFQVRFKTsKKyAgICBpbXBs
KCktPnNldENyZWF0ZShuZXdDcmVhdGUpOwogfQogCiBXZWJET01TdHJpbmcgV2ViRE9NVGVzdE9i
ajo6cmVmbGVjdGVkU3RyaW5nQXR0cigpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCA3NzBjZTUxMGJiNWQ4ZjFmNjFh
YWVjOTBhMGZjYjg3ZTM4ZWQ3M2M5Li4yOTg3MTRmMWM4MGY5MDY3ZDhmZDM5MGE4ODdhZDE2Mjk1
MTJkMzNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0T2JqLmgKQEAgLTcyLDggKzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGVzdE9i
akF0dHIoY29uc3QgV2ViRE9NVGVzdE9iaiYpOwogICAgIFdlYkRPTVRlc3RPYmogWE1MT2JqQXR0
cigpIGNvbnN0OwogICAgIHZvaWQgc2V0WE1MT2JqQXR0cihjb25zdCBXZWJET01UZXN0T2JqJik7
Ci0gICAgYm9vbCBDUkVBVEUoKSBjb25zdDsKLSAgICB2b2lkIHNldENSRUFURShib29sKTsKKyAg
ICBib29sIGNyZWF0ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3JlYXRlKGJvb2wpOwogICAgIFdl
YkRPTVN0cmluZyByZWZsZWN0ZWRTdHJpbmdBdHRyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZWZs
ZWN0ZWRTdHJpbmdBdHRyKGNvbnN0IFdlYkRPTVN0cmluZyYpOwogICAgIGludCByZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDJhMzlhYzRlMzEzNDY1ZDdkM2U3MDE2YTEyMDk5YjNhZjI4
OGMyMTUuLjQ1MjJjNzg5YjdhMWI2N2E2MTRkODI0NTdmMDYzZTJiNjkwODBlZDMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNjMsNyAr
NjMsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNb
MzRdID0KICAgICB7ICJzdHJpbmdBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpTdHJpbmdBdHRyKSwgKGlu
dHB0cl90KXNldEpTVGVzdE9ialN0cmluZ0F0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAg
eyAidGVzdE9iakF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialRlc3RPYmpBdHRyKSwgKGludHB0cl90KXNl
dEpTVGVzdE9ialRlc3RPYmpBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgIlhNTE9i
akF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialhNTE9iakF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2Jq
WE1MT2JqQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKLSAgICB7ICJDUkVBVEUiLCBEb250RGVs
ZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9iakNyZWF0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDcmVhdGUgVEhVTktfR0VORVJB
VE9SKDApIH0sCisgICAgeyAiY3JlYXRlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDcmVhdGUpLCAoaW50cHRy
X3Qpc2V0SlNUZXN0T2JqQ3JlYXRlIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgInJlZmxl
Y3RlZFN0cmluZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIpLCAoaW50
cHRyX3Qpc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkg
fSwKICAgICB7ICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlZmxlY3Rl
ZEludGVncmFsQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0
dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBE
b250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9i
alJlZmxlY3RlZEJvb2xlYW5BdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCA0YTBmMDY1Njdl
NmIwZGQzOWM2ZjA4MGNkOGFhODhmZGM4ZmMzNjMyLi5lYjhjZDk2NWM4NjBlZmQ5NWUwODFlOGRh
OWQ3Y2MzMGM0MDc2OTRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmouaApAQCAtNjQsOCArNjQsOCBAQCBlbnVtIHsKIC0gKHZvaWQpc2V0VGVz
dE9iakF0dHI6KERPTVRlc3RPYmogKiluZXdUZXN0T2JqQXR0cjsKIC0gKERPTVRlc3RPYmogKilY
TUxPYmpBdHRyOwogLSAodm9pZClzZXRYTUxPYmpBdHRyOihET01UZXN0T2JqICopbmV3WE1MT2Jq
QXR0cjsKLS0gKEJPT0wpQ1JFQVRFOwotLSAodm9pZClzZXRDUkVBVEU6KEJPT0wpbmV3Q1JFQVRF
OworLSAoQk9PTCljcmVhdGU7CistICh2b2lkKXNldENyZWF0ZTooQk9PTCluZXdDcmVhdGU7CiAt
IChOU1N0cmluZyAqKXJlZmxlY3RlZFN0cmluZ0F0dHI7CiAtICh2b2lkKXNldFJlZmxlY3RlZFN0
cmluZ0F0dHI6KE5TU3RyaW5nICopbmV3UmVmbGVjdGVkU3RyaW5nQXR0cjsKIC0gKGludClyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW0KaW5kZXggMDFmY2YzNGU5ZDY5YzUzYmM1MTc3Y2Y2MDlkMjI2MDA1
ODNkZGI3OS4uNDk4NGE2MDMxZDdiYWVlMDRmYTNhOGI4MzA5YmE5ODRmYzkyMzI2ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAt
MTY4LDE2ICsxNjgsMTYgQEAKICAgICBJTVBMLT5zZXRYTUxPYmpBdHRyKGNvcmUobmV3WE1MT2Jq
QXR0cikpOwogfQogCi0tIChCT09MKUNSRUFURQorLSAoQk9PTCljcmVhdGUKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgcmV0dXJuIElNUEwtPmlzQ3Jl
YXRlKCk7CiB9CiAKLS0gKHZvaWQpc2V0Q1JFQVRFOihCT09MKW5ld0NSRUFURQorLSAodm9pZClz
ZXRDcmVhdGU6KEJPT0wpbmV3Q3JlYXRlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldENyZWF0ZShuZXdDUkVBVEUpOworICAgIElNUEwt
PnNldENyZWF0ZShuZXdDcmVhdGUpOwogfQogCiAtIChOU1N0cmluZyAqKXJlZmxlY3RlZFN0cmlu
Z0F0dHIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggOTRm
NzM0YmM3ZjE0NWJmOGEyNmU5MDhhZGYxYWMwYTY5NjM0YzhjMy4uNGQzM2FiNWNjMTJhMzM2YmJh
YjMxMjQ3ZDAxMGFkMTY3MzU4OTc5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwKQEAgLTQ0LDcgKzQ0LDcgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBKUywg
VjgKICAgICAgICAgLy8gV0tfdWNmaXJzdCwgV0tfbGNmaXJzdCBleGNlcHRpb25hbCBjYXNlcy4K
ICAgICAgICAgYXR0cmlidXRlIFRlc3RPYmogICAgICAgICAgICAgICAgICBYTUxPYmpBdHRyOwot
ICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgICAgICAgIENSRUFURTsKKyAgICAg
ICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICAgICAgICAgICBjcmVhdGU7CiAKICAgICAgICAg
Ly8gUmVmbGVjdGVkIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIHJlZmxlY3RlZFN0cmluZ0F0dHI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1Mjg4N2QxY2E3ZDQwOWVjODAxMDhhOTEz
MDZiOGI2OTI5NjZlMDFkLi4xNTEzMjZjZmU0NTc1MzhiM2ZmYjI3M2RkOGNiNzVmZTczZTg0OWNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
QEAgLTE3MiwxNiArMTcyLDE2IEBAIHN0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlCiAgICAgcmV0dXJu
OwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IENSRUFURUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5DUkVBVEUuX2dldCIpOworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmouY3JlYXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEJvb2xlYW4oaW1wLT5pc0NyZWF0ZSgp
KTsKIH0KIAotc3RhdGljIHZvaWQgQ1JFQVRFQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCitzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNSRUFURS5fc2V0Iik7
CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jcmVhdGUuX3NldCIpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgYm9vbCB2ID0g
dmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwogICAgIGltcC0+c2V0Q3JlYXRlKHYpOwpAQCAtMTAxMSw4
ICsxMDExLDggQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10g
PSB7CiAgICAgeyJ0ZXN0T2JqQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRy
R2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlciwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdYTUxPYmpBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCiAgICAgeyJYTUxPYmpBdHRyIiwgVGVzdE9iakludGVybmFsOjpYTUxPYmpB
dHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCi0gICAgLy8gQXR0cmlidXRlICdDUkVBVEUnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnJykKLSAgICB7IkNSRUFURSIsIFRlc3RPYmpJbnRlcm5hbDo6Q1JFQVRFQXR0
ckdldHRlciwgVGVzdE9iakludGVybmFsOjpDUkVBVEVBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2NyZWF0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQorICAgIHsiY3JlYXRlIiwgVGVzdE9iakludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyLCBU
ZXN0T2JqSW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdSZWZsZWN0JykKICAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqSW50ZXJu
YWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OnJlZmxl
Y3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ3JlZmxlY3RlZEludGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdS
ZWZsZWN0JykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCA0NWNiMWI0NzVhOWFkZWI1MGQ3MTUwNDVjNGUwMWNlYTY1M2UzZjM3Li43
MDVhMDVkM2Y4ODdmNzgwNjEyOWViMGMxNzZlNmU5N2YwMmFiZTc5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtNTQsNiArNTUsNyBA
QAogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhGbGFn
cy5oIgogI2luY2x1ZGUgIlY4R0NGb3JDb250ZXh0RGlzcG9zZS5oIgogI2luY2x1ZGUgIlY4SGlk
ZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0
b3IuaCIKQEAgLTI0Myw2ICsyNDUsMTYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2lu
ZG93OjpPcHRpb25BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKICAgICBy
ZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvcigmVjhIVE1MT3B0aW9uRWxlbWVudENv
bnN0cnVjdG9yOjppbmZvLCB3aW5kb3cpOwogfQogCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpGbGFnc0FjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9
IFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gVjhET01X
cmFwcGVyOjpnZXRDb25zdHJ1Y3RvcigmVjhGbGFnczo6aW5mbywgd2luZG93KTsKK30KKyNlbmRp
ZgorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkRPTVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCkiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmls
ZWFwaS9GbGFncy5pZGwgYi9XZWJDb3JlL2ZpbGVhcGkvRmxhZ3MuaWRsCmluZGV4IGNmZTczZDIy
MTBhODBlNzJkNjdjZmIxOGE3OGU1YTc2ZjQ5MmI2OTIuLjI5NjU4YTFmZTY2NDRkN2M5MjE5NjZi
ZDVmODc5MmRmYWIwM2YxM2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9GbGFncy5pZGwK
KysrIGIvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlkbApAQCAtMzAsOSArMzAsMTAgQEAKIAogbW9k
dWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVf
U1lTVEVNCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBDYW5CZUNv
bnN0cnVjdGVkCiAgICAgXSBGbGFncyB7Ci0gICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIENSRUFU
RTsKLSAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gRVhDTFVTSVZFOworICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBjcmVhdGU7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGV4Y2x1c2l2ZTsK
ICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBjNzc1YWU2MGQxNzk5OTZjMzZjNTg4MTZkOTY3
MWEzNGFkNTlkN2UyLi5jMGViMDk2YWY2ZGQ1MzEzYmQwMGRhZTcwM2Y4ZjRkZWE4N2YxNjUzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbApAQCAtMTgwLDYgKzE4MCw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwogICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKICAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWVdIHZv
aWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25n
IHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNz
Q2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxs
YmFjayk7CisKKyAgICAgICAgYXR0cmlidXRlIFtWOEN1c3RvbUdldHRlcl0gRmxhZ3NDb25zdHJ1
Y3RvciBGbGFnczsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfT1JJRU5UQVRJT05fRVZF
TlRTKSAmJiBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67150</attachid>
            <date>2010-09-09 21:49:58 -0700</date>
            <delta_ts>2010-09-09 22:57:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45165-20100909214956.patch</filename>
            <type>text/plain</type>
            <size>21818</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OThhMGRiZWIyMDBjNDI5NmNiZmNkMDk2Mzk2MzU5MzY1ZTQzZTY5OS4uMmY4MjcwZDU0ZmYzYTI3
ZjVjMzRjNWIxYzhmZGQxMDgwNjZiYjk2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOS0wOCAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEZsYWdzIGNvbnN0cnVjdG9yIGlmIEZp
bGVTeXN0ZW0gQVBJIGlzIEVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MTY1CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBpbmNsdWRl
czoKKyAgICAgICAgLSBDaGFuZ2VkIEZsYWdzJyBhdHRyaWJ1dGUgbmFtZXMgZnJvbSBVUFBFUkNB
U0UgdG8gY2FtZWxDYXNlIHRvIHJlZmxlY3QgdGhlIHJlY2VudCBzcGVjIGNoYW5nZS4KKyAgICAg
ICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC9maWxlLXN5c3RlbS9maWxlLWRpci1zeXMu
aHRtbCN0aGUtZmxhZ3MtaW50ZXJmYWNlCisgICAgICAgIC0gRW5oYW5jZWQgRW5hYmxlZEF0UnVu
dGltZSBhdHRyaWJ1dGUgdG8gdGFrZSBwYXJhbWV0ZXIgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRl
IGEgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBtZXRob2QgbmFtZS4KKworICAgICAgICBObyBuZXcg
dGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgd2hlbiB3ZSBmdWxseSBleHBvc2UgdGhlIGludGVy
ZmFjZS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDogQWRk
ZWQgY3VzdG9tIGdldHRlciBmb3IgRmxhZ3NDb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBmaWxlYXBp
L0ZsYWdzLmlkbDogQ2hhbmdlZCBhdHRyaWJ1dGUgbmFtZXMgdG8gY2FtZWxDYXNlLgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmlkbDogRXhwb3NlZCBGbGFncyBjb25zdHJ1Y3Rvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTogVXBkYXRlZCB0aGUgV0tf
bGNmaXJzdCBoYWNrIHRvIHdvcmsgYXJvdW5kIGdldHRlciBtZXRob2QgZm9yICdjcmVhdGUnIChj
cmVhdGUoKSBzaG91bGQgYmUgYXZvaWRlZCBhcyBpdCdzIHdpZGVseSB1c2VkIHRvIGluc3RhbnRp
YXRlIGFuIG9iamVjdCkuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06IEFkZGVkIEVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5hbWUgc3VwcG9ydC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAg
ICAoV2ViRE9NVGVzdE9iajo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OnNldENy
ZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmNyZWF0ZUF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFs
OjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjplbmFibGVkQXRSdW50aW1l
TWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKToKKwogMjAxMC0wOS0wMiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCBhZGM0N2QwZGIzZjA5YWZj
YzNlNjAyMTBjZGE3YzI3MTQ4Zjk2NGQ0Li5lYzc2MmI2YzJkMTMxZjE5ZDM1ZGIwZGUwZWNiMjgz
ZDcxNDkzZjViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpA
QCAtMzQ0LDEwICszNDQsNiBAQCBzdWIgV0tfdWNmaXJzdAogICAgIG15ICRyZXQgPSB1Y2ZpcnN0
KCRwYXJhbSk7CiAgICAgJHJldCA9fiBzL1htbC9YTUwvIGlmICRyZXQgPX4gL15YbWxbXmEtel0v
OwogCi0gICAgIyBGb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkgRmxhZ3MgYXR0cmlidXRlcy4KLSAg
ICAkcmV0ID1+IHMvXkNSRUFURS9DcmVhdGUvIGlmICRyZXQgPX4gL15DUkVBVEUkLzsKLSAgICAk
cmV0ID1+IHMvXkVYQ0xVU0lWRS9FeGNsdXNpdmUvIGlmICRyZXQgPX4gL15FWENMVVNJVkUkLzsK
LQogICAgIHJldHVybiAkcmV0OwogfQogCkBAIC0zNjQsOCArMzYwLDkgQEAgc3ViIFdLX2xjZmly
c3QKICAgICAkcmV0ID1+IHMveFNMVC94c2x0LyBpZiAkcmV0ID1+IC9eeFNMVC87CiAKICAgICAj
IEZvciBIVE1MNSBGaWxlU3lzdGVtIEFQSSBGbGFncyBhdHRyaWJ1dGVzLgotICAgICRyZXQgPX4g
cy9eY1JFQVRFL2lzQ3JlYXRlLyBpZiAkcmV0ID1+IC9eY1JFQVRFJC87Ci0gICAgJHJldCA9fiBz
L15lWENMVVNJVkUvaXNFeGNsdXNpdmUvIGlmICRyZXQgPX4gL15lWENMVVNJVkUkLzsKKyAgICAj
IChjcmVhdGUgaXMgd2lkZWx5IHVzZWQgdG8gaW5zdGFudGlhdGUgYW4gb2JqZWN0IGFuZCBtdXN0
IGJlIGF2b2lkZWQuKQorICAgICRyZXQgPX4gcy9eY3JlYXRlL2lzQ3JlYXRlLyBpZiAkcmV0ID1+
IC9eY3JlYXRlJC87CisgICAgJHJldCA9fiBzL15leGNsdXNpdmUvaXNFeGNsdXNpdmUvIGlmICRy
ZXQgPX4gL15leGNsdXNpdmUkLzsKIAogICAgIHJldHVybiAkcmV0OwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMDI4MTY5Zjg4YjQxNzRiOTYz
M2IzYWJkYzQyMzNiNWMxYmFmZGM0Ni4uZDk3YjBlN2ZlYjA4NjA4ZWM3OTEyMzdmMGZmYWU0Yzlk
ZTEyY2ZkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC0xOTA3LDggKzE5MDcsNyBAQCBFTkQKIAogICAgICMgU2V0dXAgdGhlIGVuYWJsZS1hdC1y
dW50aW1lIGF0dHJzIGlmIHdlIGhhdmUgdGhlbQogICAgIGZvcmVhY2ggbXkgJHJ1bnRpbWVfYXR0
ciAoQGVuYWJsZWRBdFJ1bnRpbWUpIHsKLSAgICAgICAgIyBBIGZ1bmN0aW9uIG5hbWVkIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnttZXRob2ROYW1lfUVuYWJsZWQoKSBuZWVkIHRvIGJlIHdyaXR0
ZW4gYnkgaGFuZC4KLSAgICAgICAgJGVuYWJsZV9mdW5jdGlvbiA9ICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjoiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJHJ1bnRpbWVfYXR0ci0+c2ln
bmF0dXJlLT5uYW1lKSAuICJFbmFibGVkIjsKKyAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9
IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlKTsK
ICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkcnVudGltZV9hdHRyLT5zaWduYXR1cmUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZV9mdW5jdGlvbn0oKSkg
e1xuIik7CkBAIC0xOTU0LDcgKzE5NTMsNyBAQCBFTkQKICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
ID0gIiI7CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJFbmFibGVkQXRSdW50aW1lIn0pIHsKICAg
ICAgICAgICAgICMgT25seSBjYWxsIFNldCgpL1NldEFjY2Vzc29yKCkgaWYgdGhpcyBtZXRob2Qg
c2hvdWxkIGJlIGVuYWJsZWQKLSAgICAgICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lKSAuICJFbmFibGVkIjsKKyAgICAgICAgICAgICRlbmFibGVfZnVu
Y3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRmdW5jdGlvbi0+c2lnbmF0dXJl
KTsKICAgICAgICAgICAgICRjb25kaXRpb25hbCA9ICJpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkp
XG4gICAgICAgICI7CiAgICAgICAgIH0KIApAQCAtMzM0MCw2ICszMzM5LDE5IEBAIHN1YiBDb252
ZXJ0VG9WOFBhcmFtZXRlcgogICAgIH0KIH0KIAorIyBSZXR1cm5zIHRoZSBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzIGZ1bmN0aW9uIG5hbWUgdGhhdCBpcyBob29rZWQgdXAgdG8gY2hlY2sgaWYgYSBt
ZXRob2QvYXR0cmlidXRlIGlzIGVuYWJsZWQuCitzdWIgR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9u
TmFtZQoreworICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKKyAgICBpZiAobGVuZ3RoKCRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0pID4gMSkgewor
ICAgICAgICAjIElmIGEgcGFyYW1ldGVyIGlzIGdpdmVuIChlLmcuICJFbmFibGVkQXRSdW50aW1l
PUZlYXR1cmVOYW1lIikgcmV0dXJuIHRoZSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp7RmVhdHVy
ZU5hbWV9RW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjoiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSkgLiAiRW5hYmxlZCI7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgIyBPdGhlcndpc2UgcmV0dXJuIGEgZnVuY3Rpb24gbmFtZWQgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6e21ldGhvZE5hbWV9RW5hYmxlZCgpLgorICAgICAgICByZXR1cm4g
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgk
c2lnbmF0dXJlLT5uYW1lKSAuICJFbmFibGVkIjsKKyAgICB9Cit9CisKIHN1YiBEZWJ1Z1ByaW50
CiB7CiAgICAgbXkgJG91dHB1dCA9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDg4MmU2MzNkYWE2ZDIxYjQ3
YTk5Y2FmOTc2ZWU0MjcxYmYzN2NhNjYuLmFiNzU3YTcyYjM3MDI3NDFkZGYyNDAxNTM3ZTIzZmFm
Y2M4ZmRjNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6
OnNldFhNTE9iakF0dHIoY29uc3QgV2ViRE9NVGVzdE9iaiYgbmV3WE1MT2JqQXR0cikKICAgICBp
bXBsKCktPnNldFhNTE9iakF0dHIodG9XZWJDb3JlKG5ld1hNTE9iakF0dHIpKTsKIH0KIAotYm9v
bCBXZWJET01UZXN0T2JqOjpDUkVBVEUoKSBjb25zdAorYm9vbCBXZWJET01UZXN0T2JqOjpjcmVh
dGUoKSBjb25zdAogewogICAgIGlmICghaW1wbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMDcsMTIgKzIwNywxMiBAQCBib29sIFdlYkRPTVRlc3RPYmo6OkNSRUFURSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGltcGwoKS0+aXNDcmVhdGUoKTsKIH0KIAotdm9pZCBXZWJET01UZXN0T2JqOjpz
ZXRDUkVBVEUoYm9vbCBuZXdDUkVBVEUpCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldENyZWF0ZShi
b29sIG5ld0NyZWF0ZSkKIHsKICAgICBpZiAoIWltcGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaW1wbCgpLT5zZXRDcmVhdGUobmV3Q1JFQVRFKTsKKyAgICBpbXBsKCktPnNldENyZWF0ZShu
ZXdDcmVhdGUpOwogfQogCiBXZWJET01TdHJpbmcgV2ViRE9NVGVzdE9iajo6cmVmbGVjdGVkU3Ry
aW5nQXR0cigpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RPYmouaAppbmRleCA3NzBjZTUxMGJiNWQ4ZjFmNjFhYWVjOTBhMGZjYjg3ZTM4
ZWQ3M2M5Li4yOTg3MTRmMWM4MGY5MDY3ZDhmZDM5MGE4ODdhZDE2Mjk1MTJkMzNlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAg
LTcyLDggKzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGVzdE9iakF0dHIoY29uc3QgV2Vi
RE9NVGVzdE9iaiYpOwogICAgIFdlYkRPTVRlc3RPYmogWE1MT2JqQXR0cigpIGNvbnN0OwogICAg
IHZvaWQgc2V0WE1MT2JqQXR0cihjb25zdCBXZWJET01UZXN0T2JqJik7Ci0gICAgYm9vbCBDUkVB
VEUoKSBjb25zdDsKLSAgICB2b2lkIHNldENSRUFURShib29sKTsKKyAgICBib29sIGNyZWF0ZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0Q3JlYXRlKGJvb2wpOwogICAgIFdlYkRPTVN0cmluZyByZWZs
ZWN0ZWRTdHJpbmdBdHRyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZWZsZWN0ZWRTdHJpbmdBdHRy
KGNvbnN0IFdlYkRPTVN0cmluZyYpOwogICAgIGludCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CmluZGV4IDJhMzlhYzRlMzEzNDY1ZDdkM2U3MDE2YTEyMDk5YjNhZjI4OGMyMTUuLjQ1MjJjNzg5
YjdhMWI2N2E2MTRkODI0NTdmMDYzZTJiNjkwODBlZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbMzRdID0KICAgICB7ICJz
dHJpbmdBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpTdHJpbmdBdHRyKSwgKGludHB0cl90KXNldEpTVGVz
dE9ialN0cmluZ0F0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAidGVzdE9iakF0dHIi
LCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ialRlc3RPYmpBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialRlc3RP
YmpBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgIlhNTE9iakF0dHIiLCBEb250RGVs
ZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ialhNTE9iakF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqWE1MT2JqQXR0ciBUSFVO
S19HRU5FUkFUT1IoMCkgfSwKLSAgICB7ICJDUkVBVEUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNyZWF0ZSks
IChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDcmVhdGUgVEhVTktfR0VORVJBVE9SKDApIH0sCisgICAg
eyAiY3JlYXRlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDcmVhdGUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2Jq
Q3JlYXRlIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgInJlZmxlY3RlZFN0cmluZ0F0dHIi
LCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0ciks
IChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIgVEhVTktfR0VORVJB
VE9SKDApIH0sCiAgICAgeyAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBEb250RGVsZXRlLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJl
ZmxlY3RlZEJvb2xlYW5BdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xl
YW5BdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCA0YTBmMDY1NjdlNmIwZGQzOWM2ZjA4MGNk
OGFhODhmZGM4ZmMzNjMyLi5lYjhjZDk2NWM4NjBlZmQ5NWUwODFlOGRhOWQ3Y2MzMGM0MDc2OTRl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aApAQCAtNjQsOCArNjQsOCBAQCBlbnVtIHsKIC0gKHZvaWQpc2V0VGVzdE9iakF0dHI6KERPTVRl
c3RPYmogKiluZXdUZXN0T2JqQXR0cjsKIC0gKERPTVRlc3RPYmogKilYTUxPYmpBdHRyOwogLSAo
dm9pZClzZXRYTUxPYmpBdHRyOihET01UZXN0T2JqICopbmV3WE1MT2JqQXR0cjsKLS0gKEJPT0wp
Q1JFQVRFOwotLSAodm9pZClzZXRDUkVBVEU6KEJPT0wpbmV3Q1JFQVRFOworLSAoQk9PTCljcmVh
dGU7CistICh2b2lkKXNldENyZWF0ZTooQk9PTCluZXdDcmVhdGU7CiAtIChOU1N0cmluZyAqKXJl
ZmxlY3RlZFN0cmluZ0F0dHI7CiAtICh2b2lkKXNldFJlZmxlY3RlZFN0cmluZ0F0dHI6KE5TU3Ry
aW5nICopbmV3UmVmbGVjdGVkU3RyaW5nQXR0cjsKIC0gKGludClyZWZsZWN0ZWRJbnRlZ3JhbEF0
dHI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KaW5kZXggMDFmY2YzNGU5ZDY5YzUzYmM1MTc3Y2Y2MDlkMjI2MDA1ODNkZGI3OS4uNDk4NGE2
MDMxZDdiYWVlMDRmYTNhOGI4MzA5YmE5ODRmYzkyMzI2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMTY4LDE2ICsxNjgsMTYg
QEAKICAgICBJTVBMLT5zZXRYTUxPYmpBdHRyKGNvcmUobmV3WE1MT2JqQXR0cikpOwogfQogCi0t
IChCT09MKUNSRUFURQorLSAoQk9PTCljcmVhdGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CiAgICAgcmV0dXJuIElNUEwtPmlzQ3JlYXRlKCk7CiB9CiAKLS0g
KHZvaWQpc2V0Q1JFQVRFOihCT09MKW5ld0NSRUFURQorLSAodm9pZClzZXRDcmVhdGU6KEJPT0wp
bmV3Q3JlYXRlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIElNUEwtPnNldENyZWF0ZShuZXdDUkVBVEUpOworICAgIElNUEwtPnNldENyZWF0ZShuZXdD
cmVhdGUpOwogfQogCiAtIChOU1N0cmluZyAqKXJlZmxlY3RlZFN0cmluZ0F0dHIKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggOTRmNzM0YmM3ZjE0NWJmOGEy
NmU5MDhhZGYxYWMwYTY5NjM0YzhjMy4uM2FlMmVkNGRkM2UyMjZiNjNhNGMwZWJiMTc0Yjg5NWI1
MWRjOGY1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAg
LTQ0LDcgKzQ0LDcgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBKUywgVjgKICAgICAgICAgLy8g
V0tfdWNmaXJzdCwgV0tfbGNmaXJzdCBleGNlcHRpb25hbCBjYXNlcy4KICAgICAgICAgYXR0cmli
dXRlIFRlc3RPYmogICAgICAgICAgICAgICAgICBYTUxPYmpBdHRyOwotICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiAgICAgICAgICAgICAgICAgIENSRUFURTsKKyAgICAgICAgYXR0cmlidXRlIGJv
b2xlYW4gICAgICAgICAgICAgICAgICBjcmVhdGU7CiAKICAgICAgICAgLy8gUmVmbGVjdGVkIERP
TSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHJlZmxl
Y3RlZFN0cmluZ0F0dHI7CkBAIC0xMzcsNiArMTM3LDE0IEBAIG1vZHVsZSB0ZXN0IHsKICAgICAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIGxvbmcgaW50QXJnKTsKICNlbmRpZgogCisj
aWYgZGVmaW5lZChURVNUSU5HX1Y4KQorICAgICAgICAvLyAnRW5hYmxlZEF0UnVudGltZScgbWV0
aG9kcyBhbmQgYXR0cmlidXRlcy4KKyAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgZW5h
YmxlZEF0UnVudGltZU1ldGhvZDEoaW4gaW50IGludEFyZyk7CisgICAgICAgIFtFbmFibGVkQXRS
dW50aW1lPUZlYXR1cmVOYW1lXSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyKGluIGludCBp
bnRBcmcpOworICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVdIGxvbmcgZW5hYmxl
ZEF0UnVudGltZUF0dHIxOworICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9RmVh
dHVyZU5hbWVdIGxvbmcgZW5hYmxlZEF0UnVudGltZUF0dHIyOworI2VuZGlmCisKICAgICAgICAg
Ly8gT2JqZWN0aXZlQyByZXNlcnZlZCB3b3Jkcy4KICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgICAgICBkZXNjcmlwdGlvbjsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAg
ICAgICBpZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwCmluZGV4IDUyODg3ZDFjYTdkNDA5ZWM4MDEwOGE5MTMwNmI4YjY5Mjk2NmUwMWQuLmUyOGUx
OThlMzY3NTE4NjQwNmZhNjI3MTYwMWE2MGU0Y2E1YWM5NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1
ZGUgIlY4VGVzdENhbGxiYWNrLmgiCisjaW5jbHVkZSAiVjhpbnQuaCIKICNpbmNsdWRlICJWOGxv
Zy5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtMTcyLDE2ICsxNzMsMTYgQEAgc3RhdGljIHZvaWQgWE1MT2JqQXR0ckF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWUKICAgICByZXR1
cm47CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gQ1JFQVRFQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNSRUFURS5fZ2V0Iik7CisgICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5jcmVhdGUuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4Qm9vbGVhbihpbXAtPmlzQ3JlYXRl
KCkpOwogfQogCi1zdGF0aWMgdm9pZCBDUkVBVEVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3N0YXRpYyB2b2lkIGNyZWF0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouQ1JFQVRFLl9zZXQi
KTsKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNyZWF0ZS5fc2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBib29sIHYg
PSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgaW1wLT5zZXRDcmVhdGUodik7CkBAIC01MTUs
NiArNTE2LDM4IEBAIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiAKICNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVBdHRyMS5fZ2V0Iik7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
djg6OkludGVnZXI6Ok5ldyhpbXAtPmVuYWJsZWRBdFJ1bnRpbWVBdHRyMSgpKTsKK30KKworc3Rh
dGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50
aW1lQXR0cjEuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNl
dEVuYWJsZWRBdFJ1bnRpbWVBdHRyMSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVBdHRyMi5fZ2V0Iik7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyhpbXAtPmVuYWJsZWRBdFJ1bnRpbWVBdHRyMigpKTsK
K30KKworc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFi
bGVkQXRSdW50aW1lQXR0cjIuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAg
ICBpbXAtPnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyMih2KTsKKyAgICByZXR1cm47Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmouZGVzY3JpcHRpb24uX2dldCIpOwpAQCAtOTkwLDYgKzEw
MjMsMjQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVk
QXRSdW50aW1lTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpOworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAg
RVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCBWOGludDo6SGFzSW5zdGFuY2UoYXJnc1swXSkg
PyBWOGludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkg
OiAwKTsKKyAgICBpbXAtPmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxKGludEFyZyk7CisgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVN
ZXRob2QyIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIFY4aW50OjpIYXNJbnN0
YW5jZShhcmdzWzBdKSA/IFY4aW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDApOworICAgIGltcC0+ZW5hYmxlZEF0UnVudGltZU1ldGhvZDIoaW50
QXJnKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RPYmpJbnRlcm5hbAogCiBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBU
ZXN0T2JqQXR0cnNbXSA9IHsKQEAgLTEwMTEsOCArMTA2Miw4IEBAIHN0YXRpYyBjb25zdCBCYXRj
aGVkQXR0cmlidXRlIFRlc3RPYmpBdHRyc1tdID0gewogICAgIHsidGVzdE9iakF0dHIiLCBUZXN0
T2JqSW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjp0ZXN0
T2JqQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnWE1M
T2JqQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiWE1MT2JqQXR0
ciIsIFRlc3RPYmpJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5h
bDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAotICAgIC8vIEF0dHJpYnV0
ZSAnQ1JFQVRFJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJDUkVBVEUi
LCBUZXN0T2JqSW50ZXJuYWw6OkNSRUFURUF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6Q1JF
QVRFQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdjcmVhdGUn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7ImNyZWF0ZSIsIFRlc3RPYmpJ
bnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpjcmVhdGVBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZFN0cmluZ0F0
dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCiAgICAgeyJyZWZsZWN0
ZWRTdHJpbmdBdHRyIiwgVGVzdE9iakludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdl
dHRlciwgVGVzdE9iakludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRJbnRlZ3JhbEF0dHInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCkBAIC0xMTI3LDYgKzExNzgsMTgg
QEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBs
YXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CiAg
ICAgCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuYWJsZWRBdFJ1bnRpbWVBdHRy
MUVuYWJsZWQoKSkgeworICAgICAgICBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBhdHRy
RGF0YSA9XAorICAgICAgICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdFbmFibGVkQXRSdW50aW1lJykKKyAgICAgICAgeyJl
bmFibGVkQXRSdW50aW1lQXR0cjEiLCBUZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVB
dHRyMUF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0
YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgICB9CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZCgpKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBCYXRj
aGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCisgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0
UnVudGltZUF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuYWJsZWRBdFJ1bnRp
bWUnKQorICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMiIsIFRlc3RPYmpJbnRlcm5hbDo6
ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjplbmFibGVk
QXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfTsKKyAgICAgICAgY29uZmln
dXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOworICAgIH0KIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgdm9p
ZE1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7CkBAIC0xMTYzLDYgKzEyMjYsMTAgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1w
bGF0ZSh2ODo6UGVyc2kKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjdXN0
b21BcmdzQW5kRXhjZXB0aW9uQXJndltjdXN0b21BcmdzQW5kRXhjZXB0aW9uQXJnY10gPSB7IFY4
bG9nOjpHZXRSYXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBj
dXN0b21BcmdzQW5kRXhjZXB0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IGN1c3RvbUFyZ3NBbmRFeGNlcHRpb25BcmdjLCBjdXN0b21BcmdzQW5kRXhjZXB0aW9uQXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoImN1c3RvbUFyZ3NBbmRFeGNlcHRpb24i
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6OmN1c3RvbUFyZ3NB
bmRFeGNlcHRpb25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGN1c3RvbUFyZ3NB
bmRFeGNlcHRpb25TaWduYXR1cmUpKTsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
ZW5hYmxlZEF0UnVudGltZU1ldGhvZDFFbmFibGVkKCkpCisgICAgICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3KCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFj
aywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGRlZmF1bHRTaWduYXR1cmUpKTsKKyAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKCkpCisgICAgICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMiIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1l
dGhvZDJDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGRlZmF1bHRTaWduYXR1cmUp
KTsKICAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVGVzdE9iakNvbnN0
cywgc2l6ZW9mKFRlc3RPYmpDb25zdHMpIC8gc2l6ZW9mKCpUZXN0T2JqQ29uc3RzKSk7CiAKICAg
ICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFw
aS9GbGFncy5pZGwgYi9XZWJDb3JlL2ZpbGVhcGkvRmxhZ3MuaWRsCmluZGV4IGNmZTczZDIyMTBh
ODBlNzJkNjdjZmIxOGE3OGU1YTc2ZjQ5MmI2OTIuLjI5NjU4YTFmZTY2NDRkN2M5MjE5NjZiZDVm
ODc5MmRmYWIwM2YxM2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9GbGFncy5pZGwKKysr
IGIvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlkbApAQCAtMzAsOSArMzAsMTAgQEAKIAogbW9kdWxl
IHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lT
VEVNCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBDYW5CZUNvbnN0
cnVjdGVkCiAgICAgXSBGbGFncyB7Ci0gICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIENSRUFURTsK
LSAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gRVhDTFVTSVZFOworICAgICAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBjcmVhdGU7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGV4Y2x1c2l2ZTsKICAg
ICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBjNzc1YWU2MGQxNzk5OTZjMzZjNTg4MTZkOTY3MWEz
NGFkNTlkN2UyLi45MzY3N2M5N2YzNjM5NzBiM2ZiYTY0ODcxODYxMjE4NGZmMDI3NDcyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbApAQCAtMTgwLDYgKzE4MCw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKICAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWVdIHZvaWQg
cmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNp
emUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFj
ayk7CisKKyAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZs
YWdzQ29uc3RydWN0b3IgRmxhZ3M7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX09SSUVO
VEFUSU9OX0VWRU5UUykgJiYgRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67159</attachid>
            <date>2010-09-09 22:57:49 -0700</date>
            <delta_ts>2010-09-13 12:45:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45165-20100909225748.patch</filename>
            <type>text/plain</type>
            <size>29146</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDFkMWUzNDY3Y2U1MWUyMzBjMzBjMjZhNjYzYzI1Y2I4NmI2ODE5Ni4uZGQxMTQzYzZkNzVhMmM3
MjQyNjczMzQyNmJjYmE1MWVhYTliMjhlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOS0wOCAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEZsYWdzIGNvbnN0cnVjdG9yIGlmIEZp
bGVTeXN0ZW0gQVBJIGlzIEVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MTY1CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBpbmNsdWRl
czoKKyAgICAgICAgLSBDaGFuZ2VkIEZsYWdzJyBhdHRyaWJ1dGUgbmFtZXMgZnJvbSBVUFBFUkNB
U0UgdG8gY2FtZWxDYXNlIHRvIHJlZmxlY3QgdGhlIHJlY2VudCBzcGVjIGNoYW5nZS4KKyAgICAg
ICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC9maWxlLXN5c3RlbS9maWxlLWRpci1zeXMu
aHRtbCN0aGUtZmxhZ3MtaW50ZXJmYWNlCisgICAgICAgIC0gRW5oYW5jZWQgRW5hYmxlZEF0UnVu
dGltZSBhdHRyaWJ1dGUgdG8gdGFrZSBwYXJhbWV0ZXIgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRl
IGEgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBtZXRob2QgbmFtZS4KKworICAgICAgICBObyBuZXcg
dGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgd2hlbiB3ZSBmdWxseSBleHBvc2UgdGhlIGludGVy
ZmFjZS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDogQWRk
ZWQgY3VzdG9tIGdldHRlciBmb3IgRmxhZ3NDb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBmaWxlYXBp
L0ZsYWdzLmlkbDogQ2hhbmdlZCBhdHRyaWJ1dGUgbmFtZXMgdG8gY2FtZWxDYXNlLgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmlkbDogRXhwb3NlZCBGbGFncyBjb25zdHJ1Y3Rvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTogVXBkYXRlZCB0aGUgV0tf
bGNmaXJzdCBoYWNrIHRvIHdvcmsgYXJvdW5kIGdldHRlciBtZXRob2QgZm9yICdjcmVhdGUnIChj
cmVhdGUoKSBzaG91bGQgYmUgYXZvaWRlZCBhcyBpdCdzIHdpZGVseSB1c2VkIHRvIGluc3RhbnRp
YXRlIGFuIG9iamVjdCkuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06IEFkZGVkIEVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5hbWUgc3VwcG9ydC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAg
ICAoV2ViRE9NVGVzdE9iajo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OnNldENy
ZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmNyZWF0ZUF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFs
OjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjplbmFibGVkQXRSdW50aW1l
TWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKToKKwogMjAxMC0wOS0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggYWRjNDdkMGRiM2YwOWFmY2MzZTYwMjEwY2RhN2My
NzE0OGY5NjRkNC4uZWM3NjJiNmMyZDEzMWYxOWQzNWRiMGRlMGVjYjI4M2Q3MTQ5M2Y1YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTM0NCwxMCArMzQ0
LDYgQEAgc3ViIFdLX3VjZmlyc3QKICAgICBteSAkcmV0ID0gdWNmaXJzdCgkcGFyYW0pOwogICAg
ICRyZXQgPX4gcy9YbWwvWE1MLyBpZiAkcmV0ID1+IC9eWG1sW15hLXpdLzsKIAotICAgICMgRm9y
IEhUTUw1IEZpbGVTeXN0ZW0gQVBJIEZsYWdzIGF0dHJpYnV0ZXMuCi0gICAgJHJldCA9fiBzL15D
UkVBVEUvQ3JlYXRlLyBpZiAkcmV0ID1+IC9eQ1JFQVRFJC87Ci0gICAgJHJldCA9fiBzL15FWENM
VVNJVkUvRXhjbHVzaXZlLyBpZiAkcmV0ID1+IC9eRVhDTFVTSVZFJC87Ci0KICAgICByZXR1cm4g
JHJldDsKIH0KIApAQCAtMzY0LDggKzM2MCw5IEBAIHN1YiBXS19sY2ZpcnN0CiAgICAgJHJldCA9
fiBzL3hTTFQveHNsdC8gaWYgJHJldCA9fiAvXnhTTFQvOwogCiAgICAgIyBGb3IgSFRNTDUgRmls
ZVN5c3RlbSBBUEkgRmxhZ3MgYXR0cmlidXRlcy4KLSAgICAkcmV0ID1+IHMvXmNSRUFURS9pc0Ny
ZWF0ZS8gaWYgJHJldCA9fiAvXmNSRUFURSQvOwotICAgICRyZXQgPX4gcy9eZVhDTFVTSVZFL2lz
RXhjbHVzaXZlLyBpZiAkcmV0ID1+IC9eZVhDTFVTSVZFJC87CisgICAgIyAoY3JlYXRlIGlzIHdp
ZGVseSB1c2VkIHRvIGluc3RhbnRpYXRlIGFuIG9iamVjdCBhbmQgbXVzdCBiZSBhdm9pZGVkLikK
KyAgICAkcmV0ID1+IHMvXmNyZWF0ZS9pc0NyZWF0ZS8gaWYgJHJldCA9fiAvXmNyZWF0ZSQvOwor
ICAgICRyZXQgPX4gcy9eZXhjbHVzaXZlL2lzRXhjbHVzaXZlLyBpZiAkcmV0ID1+IC9eZXhjbHVz
aXZlJC87CiAKICAgICByZXR1cm4gJHJldDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDA2YmNlMDQ4MDlmMTkyMmIwYWNiZjNkNzczNDQzNTBj
N2IyMGYyZDQuLjAxOGI2Yzc5MjZlMDlhMjljOWFiZjc3YTA2ODVhZDRlMWM1ZmI1ZGMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTk4NCw4ICsx
OTg0LDcgQEAgRU5ECiAKICAgICAjIFNldHVwIHRoZSBlbmFibGUtYXQtcnVudGltZSBhdHRycyBp
ZiB3ZSBoYXZlIHRoZW0KICAgICBmb3JlYWNoIG15ICRydW50aW1lX2F0dHIgKEBlbmFibGVkQXRS
dW50aW1lKSB7Ci0gICAgICAgICMgQSBmdW5jdGlvbiBuYW1lZCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp7bWV0aG9kTmFtZX1FbmFibGVkKCkgbmVlZCB0byBiZSB3cml0dGVuIGJ5IGhhbmQuCi0g
ICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAuICRj
b2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRydW50aW1lX2F0dHItPnNpZ25hdHVyZS0+bmFtZSkg
LiAiRW5hYmxlZCI7CisgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5h
YmxlRnVuY3Rpb25OYW1lKCRydW50aW1lX2F0dHItPnNpZ25hdHVyZSk7CiAgICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVfYXR0
ci0+c2lnbmF0dXJlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwpAQCAtMjAz
NCw3ICsyMDMzLDcgQEAgRU5ECiAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICIiOwogICAgICAg
ICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSB7CiAgICAgICAgICAgICAjIE9u
bHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3NvcigpIGlmIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBlbmFi
bGVkCi0gICAgICAgICAgICAkZW5hYmxlX2Z1bmN0aW9uID0gIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZSkgLiAiRW5hYmxlZCI7CisgICAgICAgICAgICAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVu
dGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgICAgICAg
ICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAgICAgICAiOwog
ICAgICAgICB9CiAKQEAgLTMzODksNiArMzM4OCwxOSBAQCBzdWIgQ29udmVydFRvVjhQYXJhbWV0
ZXIKICAgICB9CiB9CiAKKyMgUmV0dXJucyB0aGUgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBmdW5j
dGlvbiBuYW1lIHRoYXQgaXMgaG9va2VkIHVwIHRvIGNoZWNrIGlmIGEgbWV0aG9kL2F0dHJpYnV0
ZSBpcyBlbmFibGVkLgorc3ViIEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKK3sKKyAgICBt
eSAkc2lnbmF0dXJlID0gc2hpZnQ7CisgICAgaWYgKGxlbmd0aCgkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSA+IDEpIHsKKyAgICAgICAgIyBJZiBh
IHBhcmFtZXRlciBpcyBnaXZlbiAoZS5nLiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIp
IHJldHVybiB0aGUgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6e0ZlYXR1cmVOYW1lfUVuYWJsZWQo
KSBtZXRob2QuCisgICAgICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAuICRj
b2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJFbmFibGVkQXRSdW50aW1lIn0pIC4gIkVuYWJsZWQiOworICAgIH0gZWxzZSB7CisgICAgICAg
ICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnttZXRob2ROYW1lfUVuYWJsZWQoKS4KKyAgICAgICAgcmV0dXJuICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjoiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJHNpZ25hdHVyZS0+bmFt
ZSkgLiAiRW5hYmxlZCI7CisgICAgfQorfQorCiBzdWIgRGVidWdQcmludAogewogICAgIG15ICRv
dXRwdXQgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA5Y2NlYjNjMzkzMTA4N2IwZjM3OWJmYzQ0ZDkzNjY3
ODUwN2M2ZmVmLi41NzkyOTVmNmM4ZjA0YTg4OGZiNDM3ODk4MjFjZTQwMTkzYjBlNzNiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBXZWJET01UZXN0T2JqOjpzZXRYTUxPYmpBdHRy
KGNvbnN0IFdlYkRPTVRlc3RPYmomIG5ld1hNTE9iakF0dHIpCiAgICAgaW1wbCgpLT5zZXRYTUxP
YmpBdHRyKHRvV2ViQ29yZShuZXdYTUxPYmpBdHRyKSk7CiB9CiAKLWJvb2wgV2ViRE9NVGVzdE9i
ajo6Q1JFQVRFKCkgY29uc3QKK2Jvb2wgV2ViRE9NVGVzdE9iajo6Y3JlYXRlKCkgY29uc3QKIHsK
ICAgICBpZiAoIWltcGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA3LDEyICsyMDcs
MTIgQEAgYm9vbCBXZWJET01UZXN0T2JqOjpDUkVBVEUoKSBjb25zdAogICAgIHJldHVybiBpbXBs
KCktPmlzQ3JlYXRlKCk7CiB9CiAKLXZvaWQgV2ViRE9NVGVzdE9iajo6c2V0Q1JFQVRFKGJvb2wg
bmV3Q1JFQVRFKQordm9pZCBXZWJET01UZXN0T2JqOjpzZXRDcmVhdGUoYm9vbCBuZXdDcmVhdGUp
CiB7CiAgICAgaWYgKCFpbXBsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGltcGwoKS0+c2V0
Q3JlYXRlKG5ld0NSRUFURSk7CisgICAgaW1wbCgpLT5zZXRDcmVhdGUobmV3Q3JlYXRlKTsKIH0K
IAogV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RPYmo6OnJlZmxlY3RlZFN0cmluZ0F0dHIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RPYmouaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
LmgKaW5kZXggMDM3YTFkM2I3ODBmNTkzYThlYWNlNzBlN2I4ZjViMTgyZTMyN2MyNy4uY2Q2Y2Fh
YTY0N2Q0ZDQxZjgxZjgzM2JiOTdlOTA2ZWI0NTQ0YmM4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC03Miw4ICs3Miw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFRlc3RPYmpBdHRyKGNvbnN0IFdlYkRPTVRlc3RPYmomKTsK
ICAgICBXZWJET01UZXN0T2JqIFhNTE9iakF0dHIoKSBjb25zdDsKICAgICB2b2lkIHNldFhNTE9i
akF0dHIoY29uc3QgV2ViRE9NVGVzdE9iaiYpOwotICAgIGJvb2wgQ1JFQVRFKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRDUkVBVEUoYm9vbCk7CisgICAgYm9vbCBjcmVhdGUoKSBjb25zdDsKKyAgICB2
b2lkIHNldENyZWF0ZShib29sKTsKICAgICBXZWJET01TdHJpbmcgcmVmbGVjdGVkU3RyaW5nQXR0
cigpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVmbGVjdGVkU3RyaW5nQXR0cihjb25zdCBXZWJET01T
dHJpbmcmKTsKICAgICBpbnQgcmVmbGVjdGVkSW50ZWdyYWxBdHRyKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2M2JjMzY4
NTFkY2I1ZjBmNTVmZGQxYjZkMjNkOGRmMzY5YWJmOWRmLi41MjM2MjY3MjcyOTU3NGNhMTFmYTg3
NGQ2MmVmMjcyNjk5YzBiM2UwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzWzM0XSA9CiAgICAgeyAic3RyaW5nQXR0ciIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqU3RyaW5nQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpTdHJpbmdBdHRy
IFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgInRlc3RPYmpBdHRyIiwgRG9udERlbGV0ZSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpUZXN0T2JqQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0ciBUSFVOS19H
RU5FUkFUT1IoMCkgfSwKICAgICB7ICJYTUxPYmpBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpYTUxPYmpB
dHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialhNTE9iakF0dHIgVEhVTktfR0VORVJBVE9SKDAp
IH0sCi0gICAgeyAiQ1JFQVRFIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDcmVhdGUpLCAoaW50cHRyX3Qpc2V0
SlNUZXN0T2JqQ3JlYXRlIFRIVU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgImNyZWF0ZSIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqQ3JlYXRlKSwgKGludHB0cl90KXNldEpTVGVzdE9iakNyZWF0ZSBUSFVOS19H
RU5FUkFUT1IoMCkgfSwKICAgICB7ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgRG9udERlbGV0ZSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpSZWZsZWN0ZWRTdHJpbmdBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAicmVmbGVjdGVkSW50ZWdyYWxB
dHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpLCAoaW50cHRyX3Qpc2V0
SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAg
IHsgInJlZmxlY3RlZEJvb2xlYW5BdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0ciBUSFVOS19H
RU5FUkFUT1IoMCkgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmgKaW5kZXggMTMyYjIxNWFlYWFjZjYxYTZlMGNjMGQ2Y2I0MDNjMGJkMTJhMTI1
ZS4uMWFkMjljYmY4NWU3OTc2YTAwNDY3ZTNiYTlmZDU3MGZkZDY5NTIzYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTY0LDggKzY0
LDggQEAgZW51bSB7CiAtICh2b2lkKXNldFRlc3RPYmpBdHRyOihET01UZXN0T2JqICopbmV3VGVz
dE9iakF0dHI7CiAtIChET01UZXN0T2JqICopWE1MT2JqQXR0cjsKIC0gKHZvaWQpc2V0WE1MT2Jq
QXR0cjooRE9NVGVzdE9iaiAqKW5ld1hNTE9iakF0dHI7Ci0tIChCT09MKUNSRUFURTsKLS0gKHZv
aWQpc2V0Q1JFQVRFOihCT09MKW5ld0NSRUFURTsKKy0gKEJPT0wpY3JlYXRlOworLSAodm9pZClz
ZXRDcmVhdGU6KEJPT0wpbmV3Q3JlYXRlOwogLSAoTlNTdHJpbmcgKilyZWZsZWN0ZWRTdHJpbmdB
dHRyOwogLSAodm9pZClzZXRSZWZsZWN0ZWRTdHJpbmdBdHRyOihOU1N0cmluZyAqKW5ld1JlZmxl
Y3RlZFN0cmluZ0F0dHI7CiAtIChpbnQpcmVmbGVjdGVkSW50ZWdyYWxBdHRyOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDk3MjVi
MjQwMzcwODUwYjY2MTMyM2M5ZTUzZWVlNmYyMWQ5N2Y2ODUuLjY3ODgwNzU0NmI0ZDM5OGYzMDA4
MWZmZmU0ZjE0YWJmNmQwOWQxMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTE2OCwxNiArMTY4LDE2IEBACiAgICAgSU1QTC0+
c2V0WE1MT2JqQXR0cihjb3JlKG5ld1hNTE9iakF0dHIpKTsKIH0KIAotLSAoQk9PTClDUkVBVEUK
Ky0gKEJPT0wpY3JlYXRlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwogICAgIHJldHVybiBJTVBMLT5pc0NyZWF0ZSgpOwogfQogCi0tICh2b2lkKXNldENSRUFU
RTooQk9PTCluZXdDUkVBVEUKKy0gKHZvaWQpc2V0Q3JlYXRlOihCT09MKW5ld0NyZWF0ZQogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRD
cmVhdGUobmV3Q1JFQVRFKTsKKyAgICBJTVBMLT5zZXRDcmVhdGUobmV3Q3JlYXRlKTsKIH0KIAog
LSAoTlNTdHJpbmcgKilyZWZsZWN0ZWRTdHJpbmdBdHRyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDg5ZGZkZjc3ZTQ2YmRiMzAwMmY5ZDk4MjI5ZDQwMTll
M2NhMTEzMjkuLjIyZWQ2ODBlM2Q5MGM1OWRhYjdjMDNmMDdiM2VlOWM1NGIxZTNiNTEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC00NCw3ICs0NCw3IEBA
IG1vZHVsZSB0ZXN0IHsKICAgICAgICAgSlMsIFY4CiAgICAgICAgIC8vIFdLX3VjZmlyc3QsIFdL
X2xjZmlyc3QgZXhjZXB0aW9uYWwgY2FzZXMuCiAgICAgICAgIGF0dHJpYnV0ZSBUZXN0T2JqICAg
ICAgICAgICAgICAgICAgWE1MT2JqQXR0cjsKLSAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAg
ICAgICAgICAgICAgICBDUkVBVEU7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAg
ICAgICAgICAgY3JlYXRlOwogCiAgICAgICAgIC8vIFJlZmxlY3RlZCBET00gYXR0cmlidXRlcwog
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyByZWZsZWN0ZWRTdHJpbmdBdHRy
OwpAQCAtMTQyLDYgKzE0MiwxNCBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIFtDbGFzc01ldGhv
ZF0gdm9pZCBjbGFzc01ldGhvZCgpOwogICAgICAgICBbQ2xhc3NNZXRob2RdIGxvbmcgY2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwoaW4gW09wdGlvbmFsXSBsb25nIGFyZyk7CiAKKyNpZiBkZWZpbmVk
KFRFU1RJTkdfVjgpCisgICAgICAgIC8vICdFbmFibGVkQXRSdW50aW1lJyBtZXRob2RzIGFuZCBh
dHRyaWJ1dGVzLgorICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCBlbmFibGVkQXRSdW50
aW1lTWV0aG9kMShpbiBpbnQgaW50QXJnKTsKKyAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9RmVh
dHVyZU5hbWVdIHZvaWQgZW5hYmxlZEF0UnVudGltZU1ldGhvZDIoaW4gaW50IGludEFyZyk7Cisg
ICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0gbG9uZyBlbmFibGVkQXRSdW50aW1l
QXR0cjE7CisgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZV0g
bG9uZyBlbmFibGVkQXRSdW50aW1lQXR0cjI7CisjZW5kaWYKKwogICAgICAgICAvLyBPYmplY3Rp
dmVDIHJlc2VydmVkIHdvcmRzLgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAg
IGRlc2NyaXB0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgIGlkOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAKaW5kZXggMzQwZGNhNzE5YWYzZDBhOTA0ODk1MThkYmRmZWUxYzE3NGQ4NGM3OC4uMjY3
ZjFmMDliYmM4ZWU4ZDNiMjYyMjZlMGY4MDc3ZGEzZmE5ZDU4OCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC03MCwy
NCArNzAsMTYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdElu
dGVyZmFjZTo6R2V0VGVtcGxhdGUoKQogICAgIHJldHVybiBWOFRlc3RJbnRlcmZhY2VDYWNoZTsK
IH0KIAotVGVzdEludGVyZmFjZSogVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0
SW50ZXJmYWNlKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKLX0KLQogYm9vbCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsKICAgICByZXR1cm4gR2V0UmF3VGVtcGxh
dGUoKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0SW50ZXJmYWNlOjp3cmFwKFRlc3RJbnRlcmZhY2UqIGltcGwpCit2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdEludGVyZmFjZTo6d3JhcFNsb3coVGVzdEludGVyZmFjZSogaW1wbCkK
IHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CiAgICAgVjhQcm94eSogcHJv
eHkgPSAwOwotICAgICAgICB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCkuZ2V0KGltcGwpOwot
ICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94
eSwgJmluZm8sIGltcGwpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CkBAIC05NywxOCArODksNiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdEludGVyZmFjZTo6d3JhcChUZXN0SW50ZXJmYWNlKiBpbXBsKQogICAgIHJldHVybiB3cmFw
cGVyOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPFRlc3RJbnRl
cmZhY2UgPiBpbXBsKQotewotICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCkpOwotfQotCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0SW50ZXJmYWNlKiBpbXBsKQotewotICAgIGlmICgh
aW1wbCkKLSAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7Ci0gICAgcmV0dXJuIFY4VGVzdEludGVy
ZmFjZTo6d3JhcChpbXBsKTsKLX0KLQogdm9pZCBWOFRlc3RJbnRlcmZhY2U6OmRlcmVmT2JqZWN0
KHZvaWQqIG9iamVjdCkKIHsKICAgICBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4ob2JqZWN0
KS0+ZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmgKaW5kZXggYWZkZjM4MWM0NmIzNzhiYzg0OWE4NjFjOTlmYzgwNmQ4NWUx
YTViMy4uYzFlMzE5YjdmMWY0NGQ3MDE2NTA3ODIyNTljMmI4ODk0NmM2N2UxMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAg
LTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgVjhUZXN0SW50ZXJmYWNlX2gKIAogI2luY2x1ZGUgIlRl
c3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJXcmFw
cGVyVHlwZUluZm8uaCIKICNpbmNsdWRlICJ3dGYvdGV4dC9TdHJpbmdIYXNoLmgiCiAjaW5jbHVk
ZSA8djguaD4KQEAgLTM3LDE2ICszOCwzOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgSGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOwot
ICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KTsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RJbnRlcmZhY2Uq
KTsKKyAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0
SW50ZXJmYWNlKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKKyAgICB9CisgICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSopOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2Jq
ZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7Citwcml2YXRlOgorICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFRlc3RJbnRlcmZhY2UqKTsKIH07
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RJbnRlcmZhY2UqKTsKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZSA+KTsKKwordjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RJbnRlcmZhY2U6OndyYXAoVGVzdEludGVyZmFjZSogaW1w
bCkKK3sKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2Jq
ZWN0TWFwKCkuZ2V0KGltcGwpOworICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6d3Jh
cFNsb3coaW1wbCk7Cit9CisKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0
SW50ZXJmYWNlKiBpbXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJuIHY4OjpO
dWxsKCk7CisgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6d3JhcChpbXBsKTsKK30KK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4g
aW1wbCkKK3sKKyAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpKTsKK30KIH0KIAogI2VuZGlmIC8v
IFY4VGVzdEludGVyZmFjZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcAppbmRleCA4ZjgyNGQ5Njk5NDU2MDAxOTRhMTAwMjhiOTZkOWVjOWE2NTFl
YjRiLi40NGYwZDNlMmFhNGQwN2I2ZjczY2FjYzdhMWM2YmEyOTlkYjY1YzU4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKICNpbmNsdWRlICJWOFRlc3RDYWxsYmFjay5oIgorI2luY2x1ZGUgIlY4aW50LmgiCiAjaW5j
bHVkZSAiVjhsb2cuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTE3MiwxNiArMTczLDE2IEBAIHN0YXRpYyB2b2lkIFhNTE9iakF0dHJB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
CiAgICAgcmV0dXJuOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IENSRUFURUF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5DUkVBVEUuX2dldCIpOworICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouY3JlYXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEJvb2xlYW4oaW1w
LT5pc0NyZWF0ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgQ1JFQVRFQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNS
RUFURS5fc2V0Iik7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jcmVhdGUuX3NldCIpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgYm9vbCB2ID0gdmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwogICAgIGltcC0+c2V0Q3JlYXRlKHYp
OwpAQCAtNTE1LDYgKzUxNiwzOCBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIzQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiAjZW5kaWYg
Ly8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50aW1lQXR0cjEuX2dldCIpOwor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW1wLT5lbmFibGVkQXRSdW50aW1lQXR0cjEoKSk7
Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5h
YmxlZEF0UnVudGltZUF0dHIxLl9zZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7Cisg
ICAgaW1wLT5zZXRFbmFibGVkQXRSdW50aW1lQXR0cjEodik7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50aW1lQXR0cjIu
X2dldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW1wLT5lbmFibGVkQXRSdW50aW1l
QXR0cjIoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmouZW5hYmxlZEF0UnVudGltZUF0dHIyLl9zZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2
YWx1ZSk7CisgICAgaW1wLT5zZXRFbmFibGVkQXRSdW50aW1lQXR0cjIodik7CisgICAgcmV0dXJu
OworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRlc2NyaXB0aW9uLl9nZXQiKTsKQEAg
LTEwMjAsNiArMTA1MywyNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIHJldHVybiB2
ODo6SW50ZWdlcjo6TmV3KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGFyZykpOwog
fQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2Qx
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxIik7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBpbnRBcmcsIFY4aW50OjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4aW50Ojp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIGltcC0+
ZW5hYmxlZEF0UnVudGltZU1ldGhvZDEoaW50QXJnKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0
UnVudGltZU1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5hYmxlZEF0UnVudGltZU1ldGhvZDIiKTsKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgVjhpbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8g
VjhpbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDog
MCk7CisgICAgaW1wLT5lbmFibGVkQXRSdW50aW1lTWV0aG9kMihpbnRBcmcpOworICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdE9iaklu
dGVybmFsCiAKIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpBdHRyc1tdID0g
ewpAQCAtMTA0MSw4ICsxMDkyLDggQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVz
dE9iakF0dHJzW10gPSB7CiAgICAgeyJ0ZXN0T2JqQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6dGVz
dE9iakF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRl
ciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdYTUxPYmpBdHRyJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJYTUxPYmpBdHRyIiwgVGVzdE9iakludGVy
bmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpYTUxPYmpBdHRyQXR0
clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCi0gICAgLy8gQXR0cmlidXRlICdDUkVBVEUnIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7IkNSRUFURSIsIFRlc3RPYmpJbnRlcm5h
bDo6Q1JFQVRFQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpDUkVBVEVBdHRyU2V0dGVyLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2NyZWF0ZScgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiY3JlYXRlIiwgVGVzdE9iakludGVybmFsOjpjcmVhdGVB
dHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKICAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBU
ZXN0T2JqSW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50
ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEludGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdSZWZsZWN0JykKQEAgLTExNTcsNiArMTIwOCwxOCBAQCBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRl
KHY4OjpQZXJzaQogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0g
ZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxh
dGU+IHByb3RvID0gZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKTsKICAgICAKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6ZW5hYmxlZEF0UnVudGltZUF0dHIxRW5hYmxlZCgpKSB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCisgICAgICAg
IC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ0VuYWJsZWRBdFJ1bnRpbWUnKQorICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVB
dHRyMSIsIFRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlciwg
VGVzdE9iakludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfTsKKyAgICAgICAgY29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0
ckRhdGEpOworICAgIH0KKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmVhdHVyZU5h
bWVFbmFibGVkKCkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgYXR0
ckRhdGEgPVwKKyAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkQXRSdW50aW1lQXR0cjInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnRW5hYmxlZEF0UnVudGltZScpCisgICAgICAgIHsi
ZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVzdE9iakludGVybmFsOjplbmFibGVkQXRSdW50aW1l
QXR0cjJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0
dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5z
dGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CisgICAgfQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAndm9pZE1ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCB2b2lkTWV0aG9kV2l0aEFyZ3NB
cmdjID0gMzsKQEAgLTExOTUsNiArMTI1OCwxMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJjdXN0b21BcmdzQW5kRXhjZXB0aW9uIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjpjdXN0b21BcmdzQW5k
RXhjZXB0aW9uQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCBjdXN0b21BcmdzQW5k
RXhjZXB0aW9uU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY2xh
c3NNZXRob2QiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6OmNs
YXNzTWV0aG9kQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6TG9jYWw8djg6
OlNpZ25hdHVyZT4oKSkpOwogICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXcoImNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVy
bmFsOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKKyAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6ZW5hYmxlZEF0UnVudGltZU1ldGhvZDFFbmFibGVkKCkpCisgICAgICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1l
dGhvZDFDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGRlZmF1bHRTaWduYXR1cmUp
KTsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKCkp
CisgICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJlbmFibGVkQXRSdW50aW1lTWV0
aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6ZW5hYmxl
ZEF0UnVudGltZU1ldGhvZDJDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGRlZmF1
bHRTaWduYXR1cmUpKTsKICAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywg
VGVzdE9iakNvbnN0cywgc2l6ZW9mKFRlc3RPYmpDb25zdHMpIC8gc2l6ZW9mKCpUZXN0T2JqQ29u
c3RzKSk7CiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKQEAgLTEyMTQsMjQgKzEy
ODEsMTYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6
R2V0VGVtcGxhdGUoKQogICAgIHJldHVybiBWOFRlc3RPYmpDYWNoZTsKIH0KIAotVGVzdE9iaiog
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKLXsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0T2JqKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJv
bUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKLX0KLQogYm9vbCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gR2V0UmF3VGVtcGxhdGUoKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiAKLXY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T2JqOjp3cmFwKFRlc3RPYmoqIGltcGwpCit2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE9iajo6d3JhcFNsb3coVGVzdE9iaiogaW1wbCkKIHsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CiAgICAgVjhQcm94eSogcHJveHkgPSAw
OwotICAgICAgICB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCkuZ2V0KGltcGwpOwotICAgICAg
ICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAg
ICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94eSwgJmlu
Zm8sIGltcGwpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CkBAIC0xMjQxLDE4ICsxMzAwLDYgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRl
c3RPYmo6OndyYXAoVGVzdE9iaiogaW1wbCkKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjxUZXN0T2JqID4gaW1wbCkKLXsKLSAg
ICByZXR1cm4gdG9WOChpbXBsLmdldCgpKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoVGVzdE9iaiogaW1wbCkKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2ODo6
TnVsbCgpOwotICAgIHJldHVybiBWOFRlc3RPYmo6OndyYXAoaW1wbCk7Ci19Ci0KIHZvaWQgVjhU
ZXN0T2JqOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCiB7CiAgICAgc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KG9iamVjdCktPmRlcmVmKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5oCmluZGV4IGQ5NzE1YzlkNDMxMDgwNmQ3OWM4ZWY0OTE4N2JmMTdiZDc5
YjQyMTcuLjFlNjA0ODhkOWFjNjVlMmViNDVhN2FmZjRlYmE3MmQ1Njk3NzRiMDMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC0yMiw2ICsyMiw3
IEBACiAjZGVmaW5lIFY4VGVzdE9ial9oCiAKICNpbmNsdWRlICJUZXN0T2JqLmgiCisjaW5jbHVk
ZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiV3JhcHBlclR5cGVJbmZvLmgiCiAjaW5jbHVk
ZSAid3RmL3RleHQvU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgPHY4Lmg+CkBAIC0zNSw4ICszNiwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOwotICAgIHN0YXRpYyBUZXN0T2JqKiB0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKFRlc3RPYmoqKTsKKyAgICBzdGF0aWMgVGVzdE9iaiogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUZXN0T2JqKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQo
djhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKKyAgICB9CisgICAgaW5saW5lIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE9iaiopOwogICAgIHN0YXRpYyB2b2lkIGRlcmVm
T2JqZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21NZXRob2RDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJik7CkBAIC00NCwxMCArNDgsMjkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tQXR0ckFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKICAgICBzdGF0aWMg
dm9pZCBjdXN0b21BdHRyQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworcHJpdmF0ZToKKyAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhUZXN0T2JqKik7CiB9OwogCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChUZXN0T2JqKik7Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNz
UmVmUHRyPFRlc3RPYmogPik7CisKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T2JqOjp3
cmFwKFRlc3RPYmoqIGltcGwpCit7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsKKyAgICAgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBWOFRl
c3RPYmo6OndyYXBTbG93KGltcGwpOworfQorCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE9iaiogaW1wbCkKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2
ODo6TnVsbCgpOworICAgIHJldHVybiBWOFRlc3RPYmo6OndyYXAoaW1wbCk7Cit9CitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdE9iaiA+IGltcGwpCit7
CisgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSk7Cit9CiB9CiAKICNlbmRpZiAvLyBWOFRlc3RP
YmpfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlkbCBiL1dlYkNvcmUvZmls
ZWFwaS9GbGFncy5pZGwKaW5kZXggY2ZlNzNkMjIxMGE4MGU3MmQ2N2NmYjE4YTc4ZTVhNzZmNDky
YjY5Mi4uMjk2NThhMWZlNjY0NGQ3YzkyMTk2NmJkNWY4NzkyZGZhYjAzZjEzYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9maWxlYXBpL0ZsYWdzLmlkbAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmxhZ3Mu
aWRsCkBAIC0zMCw5ICszMCwxMCBAQAogCiBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNl
IFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0KKyAgICAgICAgQ29uZGl0aW9uYWw9
RklMRV9TWVNURU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQKICAgICBdIEZsYWdzIHsKLSAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gQ1JFQVRFOwotICAgICAgICBhdHRyaWJ1dGUgYm9vbGVh
biBFWENMVVNJVkU7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGNyZWF0ZTsKKyAgICAgICAg
YXR0cmlidXRlIGJvb2xlYW4gZXhjbHVzaXZlOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4
IGIxYzI5MmEwZTBjZTU4NDhmNjViZGY3ZWEzZDU1ZTJlNWJiZGJjODYuLjdlNDhmOGM1MzExMmI2
ZTAzMTdlMTEyNWFmNTFiMGY5MzUzMzRmMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xOTMsNiArMTkz
LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBP
UkFSWSA9IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwog
ICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNp
Z25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25h
bF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRp
b25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKworICAgICAgICBhdHRyaWJ1dGUg
W0VuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmxhZ3NDb25zdHJ1Y3RvciBGbGFnczsKICNl
bmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTKSAmJiBFTkFCTEVf
T1JJRU5UQVRJT05fRVZFTlRTCg==
</data>
<flag name="review"
          id="56390"
          type_id="1"
          status="+"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>