<?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>112769</bug_id>
          
          <creation_ts>2013-03-19 18:38:58 -0700</creation_ts>
          <short_desc>HTMLNames local names should be thread-safe</short_desc>
          <delta_ts>2023-12-25 10:06:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>112831</dependson>
          <blocked>112303</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>858961</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 18:38:58 -0700</bug_when>
    <thetext>HTMLNames local names should be thread-safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858962</commentid>
    <comment_count>1</comment_count>
      <attachid>193965</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 18:39:32 -0700</bug_when>
    <thetext>Created attachment 193965
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858964</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 18:43:27 -0700</bug_when>
    <thetext>There&apos;s an interesting issue with using these StringImpls on background threads because the&apos;ll have their isAtomic bit set but won&apos;t be in the background thread&apos;s atomic string table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858977</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-19 19:04:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; There&apos;s an interesting issue with using these StringImpls on background threads because the&apos;ll have their isAtomic bit set but won&apos;t be in the background thread&apos;s atomic string table.

Isn&apos;t that the case already today when you use the StringImpl in the Threaded Parser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858992</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-19 19:28:18 -0700</bug_when>
    <thetext>Thinking about it. Wouldn&apos;t it be better if isAtomic() is always false on the static strings?

The purpose of isAtomic is for destruction of the StringImpl (and a little shortcut on AtomicString creation). The first is irrelevant for static string, the second would be misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858999</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-19 19:48:06 -0700</bug_when>
    <thetext>Yes.  It does seem that &quot;isAtomic&quot; is really &quot;shouldRemoveFromAtomicStringTableOnDestruction&quot;, and thus doesn&apos;t apply to static strings.

We could make this explicit with some renamings of the functions.  It&apos;s kinda ugly that this is all in StringImpl, but I completely understand why we do it this way. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859027</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 20:45:42 -0700</bug_when>
    <thetext>&gt; Isn&apos;t that the case already today when you use the StringImpl in the Threaded Parser?

Yes, but that&apos;s something I&apos;m considering whether we can improve with this patch.

&gt; Thinking about it. Wouldn&apos;t it be better if isAtomic() is always false on the static strings?

That would mean that this operation would be slow:

String foo = HTMLName::divTag;
AtomicString bar = foo;

because we&apos;d need to do a hash lookup.

&gt; The purpose of isAtomic is for destruction of the StringImpl (and a little shortcut on AtomicString creation). The first is irrelevant for static string, the second would be misleading.

That&apos;s true as this patch stands currently, but we should consider improving that situation.

&gt; Yes.  It does seem that &quot;isAtomic&quot; is really &quot;shouldRemoveFromAtomicStringTableOnDestruction&quot;, and thus doesn&apos;t apply to static strings.

That&apos;s one thing the isAtomic bit is used for, but as Benjamin points out, there is another use for the bit.

It&apos;s not clear to me whether we want static StringImpl objects to be able to be part of multiple AtomicStringTables.  We don&apos;t need to resolve this question in this patch, so perhaps we should worry about making that decision in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859054</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-19 21:25:16 -0700</bug_when>
    <thetext>&gt; It&apos;s not clear to me whether we want static StringImpl objects to be able to be part of multiple AtomicStringTables.  We don&apos;t need to resolve this question in this patch, so perhaps we should worry about making that decision in the future.

I think we should still figure out a plan. I understand it is not strictly needed for your patch, but it would be good to have clear semantic from the beginning (and enforce it with assertions).

&gt; &gt; Thinking about it. Wouldn&apos;t it be better if isAtomic() is always false on the static strings?
&gt; 
&gt; That would mean that this operation would be slow:
&gt; 
&gt; String foo = HTMLName::divTag;
&gt; AtomicString bar = foo;
&gt; 
&gt; because we&apos;d need to do a hash lookup.

To a certain definition of &quot;slow&quot; yes :)

It would be really easy to measure. Once your patch is done, could you check how often is this branch taken for the HTMLNames?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859055</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-19 21:29:12 -0700</bug_when>
    <thetext>Maybe it is simpler to split this in two?
1) Have the names setup at compile times.
2) Make them static and enforce one of the two options discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859071</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 22:20:24 -0700</bug_when>
    <thetext>Sure.  Breaking this patch into smaller steps it a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859646</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-20 13:24:37 -0700</bug_when>
    <thetext>The first step of this patch is in bug 112831.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859879</commentid>
    <comment_count>11</comment_count>
      <attachid>194148</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-20 17:24:56 -0700</bug_when>
    <thetext>Created attachment 194148
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859899</commentid>
    <comment_count>12</comment_count>
      <attachid>194153</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-20 17:50:00 -0700</bug_when>
    <thetext>Created attachment 194153
works in the Chromium port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859901</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-20 17:54:02 -0700</bug_when>
    <thetext>There&apos;s some more port-specific work to do for this patch.  We need to call WebCore::init early in the initialization process, before we&apos;ve used any AtomicStrings, to ensure that the static versions of the strings are the ones that end up in the atomic string table.

The good news is that we have an ASSERT that will catch when we screw this up.  The bad news is that I&apos;m not sure where to put the call to WebCore::init in all the ports.  For WebKit2, WebProcess::initializeProcess looks like a tempting location.  For non-WebKit2 ports, I have no clue.

Any help in this regard would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859903</commentid>
    <comment_count>14</comment_count>
      <attachid>194153</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-20 17:55:38 -0700</bug_when>
    <thetext>Comment on attachment 194153
works in the Chromium port

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

&gt; Source/WTF/wtf/text/StringStatics.cpp:87
&gt; +void StringStatics::init()

These probably should move to WebCore since they&apos;re specific to the web.

&gt; Source/WebKit/chromium/src/WebKit.cpp:149
&gt;      WTF::initializeThreading();
&gt;      WTF::initializeMainThread();
&gt; -    WTF::AtomicString::init();
&gt; +    WebCore::init();

Maybe I should look for where other ports call initializeThreading?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2001931</commentid>
    <comment_count>15</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-12-25 10:06:10 -0800</bug_when>
    <thetext>Threaded HTML parser was removed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193965</attachid>
            <date>2013-03-19 18:39:32 -0700</date>
            <delta_ts>2013-03-20 17:24:53 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-112769-20130319183522.patch</filename>
            <type>text/plain</type>
            <size>23293</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQzYjAyZjFjMDdlMWUzOGNkOTNjOGEy
ZjQ3ZTJmNmQ0ZjBmZDdlMzguLmI1Y2FjMzdhODEzYzNkMmQwZjU2YjllNDRmN2Q4NTA1NGZlZWUw
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBIVE1MTmFtZXMgbG9jYWwgbmFtZXMgc2hvdWxkIGJlIHRo
cmVhZC1zYWZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTI3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjppc1N0YXRpYyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKFN0YXRpY0Rh
dGEpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjphc3NlcnRWYWxpZEhhc2gpOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcDoKKyAgICAgICAg
KFdURjo6QXRvbWljU3RyaW5nOjppbml0KToKKwogMjAxMy0wMy0xOCAgQmVuamFtaW4gUG91bGFp
biAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPU10gTWFrZSBhIFVDaGFyIHN0
cmluZyBlcXVhbCgpIGJhc2VkIG9uIHRoZSBMQ2hhciB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQz
YmE4N2YyMmRjOGYzNmY3YTJkY2E5MWM0N2U1Y2EzNTdlOTFkMS4uYmZmOTVlNTAzMWE0NjIzNzIw
MWE3YTU2ZDIzY2YzOTllN2ViOTgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEz
LTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgSFRNTE5h
bWVzIGxvY2FsIG5hbWVzIHNob3VsZCBiZSB0aHJlYWQtc2FmZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNzY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9z
Y3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbTogQWRkZWQuCisgICAgICAgIChHZW5lcmF0
ZVN0cmluZ3MpOgorICAgICAgICAoR2VuZXJhdGVWYWxpZGF0ZVN0cmluZ3MpOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVF1YWxpZmll
ZE5hbWUpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHZhbHVlRm9yTmFtZSk6
CisgICAgICAgIChuYW1lc1RvU3RyaW5ncyk6CisgICAgICAgIChwcmludE5hbWVzQ3BwRmlsZSk6
CisgICAgICAgIChwcmludERlZmluaXRpb25zKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKworMjAxMy0w
My0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIEdlbmVyYXRl
SGFzaFZhbHVlIHNob3VsZCBiZSB1c2FibGUgb3V0c2lkZSBDb2RlR2VuZXJhdG9ySlMucG0KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjczNgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY3OGE3NDlmNWQyODM3ZmI3Yjk3Y2ZlMGQ4ZWIy
MTBmYTI4ZjI4NDQuLjkzNDNmNzkyNjEyMTNhZmMzNWE1MzU3YjRlMjAyMTMyZjY2ZjJiZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMTkgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBIVE1MTmFtZXMgbG9jYWwg
bmFtZXMgc2hvdWxkIGJlIHRocmVhZC1zYWZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bml0aWFsaXplV2l0aG91dFY4KToKKwogMjAxMy0wMy0xOSAgQWxleGVpIEZpbGlwcG92ICA8YWxw
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIGZsYWt5IHBh
cnQgb2YgdGVzdFJlbmRlcmVyUHJvY2Vzc05hdGl2ZU1lbW9yeVNpemUgdGVzdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBjMzdlYWYwYzU3YjhmOGUyMjk0NmE5N2YwNzNj
OTMxY2U4ODE3YTNlLi5hODgzY2RlNjI2YmEyZmYxMjQwNWI2YTdkOGU5YzIyNTgzZjQzZTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC00MzMsNiArNDMzLDcgQEAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwq
IHIpCiAgICAgU3RyaW5nSW1wbCogcmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRkKHIpLml0ZXJh
dG9yOwogICAgIGlmIChyZXN1bHQgPT0gcikKICAgICAgICAgci0+c2V0SXNBdG9taWModHJ1ZSk7
CisgICAgQVNTRVJUKHJlc3VsdC0+aXNTdGF0aWMoKSB8fCAhci0+aXNTdGF0aWMoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwZGY0ODIz
MGY1YzM0N2Q5YTUxNTE2NTkyZjBlY2M1YjZkZDQwNGM2Li40OTc2ZWMxNTMzMjMzNjVlYjE4MjAw
YzhjYzhjZjA3OWFiMjcxMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTE4LDE1
ICs1MTgsMTcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVy
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSGFzVGVybWluYXRp
bmdOdWxsQ2hhcmFjdGVyOyB9CiAKICAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KLSAgICB2b2lkIHNldElzQXRv
bWljKGJvb2wgaXNJZGVudGlmaWVyKQorICAgIHZvaWQgc2V0SXNBdG9taWMoYm9vbCBpc0F0b21p
YykKICAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7Ci0gICAgICAgIGlmIChpc0lk
ZW50aWZpZXIpCisgICAgICAgIEFTU0VSVCghaXNTdGF0aWMoKSB8fCBpc0F0b21pYyk7CisgICAg
ICAgIGlmIChpc0F0b21pYykKICAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZs
YWdJc0F0b21pYzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0g
fnNfaGFzaEZsYWdJc0F0b21pYzsKICAgICB9CiAKKyAgICBib29sIGlzU3RhdGljKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWZDb3VudCAmIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7IH0KKwog
I2lmZGVmIFNUUklOR19TVEFUUwogICAgIGJvb2wgaXNTdWJTdHJpbmcoKSBjb25zdCB7IHJldHVy
biAgYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nOyB9CiAjZW5kaWYKQEAgLTcz
NSw3ICs3MzcsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLQogICAgIGJvb2wgaXNB
U0NJSUxpdGVyYWwoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlzOEJpdCgpICYmIGhh
c0ludGVybmFsQnVmZmVyKCkgJiYgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9kYXRh
OCkgIT0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwpAQCAtNzQ1LDcg
Kzc0Niw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfY29weUNoYXJz
SW5saW5lQ3V0T2ZmID0gMjA7CiAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlw
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRG
bGFncyAmIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXApOyB9Ci0gICAgYm9vbCBpc1N0YXRpYygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5n
OyB9CiAgICAgdGVtcGxhdGUgPGNsYXNzIFVDaGFyUHJlZGljYXRlPiBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUpOwogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNh
dGUpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBORVZFUl9JTkxJTkUgY29uc3QgVUNoYXIq
IGdldERhdGExNlNsb3dDYXNlKCkgY29uc3Q7CkBAIC03NzEsNiArNzcxLDI5IEBAIHByaXZhdGU6
CiAjaWZkZWYgU1RSSU5HX1NUQVRTCiAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0cmluZ1N0
YXRzIG1fc3RyaW5nU3RhdHM7CiAjZW5kaWYKKworcHVibGljOgorICAgIHN0cnVjdCBTdGF0aWNE
YXRhIHsKKyAgICAgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKKyAgICAgICAgdW5zaWduZWQgbV9s
ZW5ndGg7CisgICAgICAgIGNvbnN0IExDaGFyKiBtX2RhdGE4OworICAgICAgICBjb25zdCBVQ2hh
ciogbV9jb3B5RGF0YTE2OworICAgICAgICB1bnNpZ25lZCBtX2hhc2hBbmRGbGFnczsKKworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsUmVmQ291bnQgPSBzX3JlZkNvdW50
RmxhZ0lzU3RhdGljU3RyaW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0
aWFsRmxhZ3MgPSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdIYXMxNkJpdFNoYWRv
dyB8IEJ1ZmZlckludGVybmFsOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNo
U2hpZnQgPSBzX2ZsYWdDb3VudDsKKyAgICB9OworCisjaWZuZGVmIE5ERUJVRworICAgIHZvaWQg
YXNzZXJ0VmFsaWRIYXNoKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNIYXNoKCkpOworICAg
ICAgICBBU1NFUlQoaGFzaCgpID09IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9w
OEJpdHMoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpKTsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAg
IHVuaW9uIHsKQEAgLTc4OCw2ICs4MTEsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWdu
ZWQgbV9oYXNoQW5kRmxhZ3M7CiB9OwogCitDT01QSUxFX0FTU0VSVChzaXplb2YoU3RyaW5nSW1w
bCkgPT0gc2l6ZW9mKFN0cmluZ0ltcGw6OlN0YXRpY0RhdGEpLCBTdHJpbmdJbXBsX3Nob3VsZF9t
YXRjaF9pdHNfU3RhdGljRGF0YSk7CisKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGNvbnN0
IExDaGFyKiBTdHJpbmdJbXBsOjpnZXRDaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJu
IGNoYXJhY3RlcnM4KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdTdGF0aWNzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5k
ZXggMmUxYjk1NWFjZDE0ZWQyMzEyZmViMjYzZjY2MmRiZDVjMTBlNDkxMC4uMTA0MmI5MjliZjFj
ZGEzMmJmNjA2NDYzZGY0YWU1ZDgwM2E0NjdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdTdGF0aWNzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0
YXRpY3MuY3BwCkBAIC04NCw4ICs4NCw2IEBAIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkKICAg
ICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJmNvbW1lbnRBdG9tKSBBdG9taWNTdHJpbmcoIiNj
b21tZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIG5l
dyAoTm90TnVsbCwgKHZvaWQqKSZzdGFyQXRvbSkgQXRvbWljU3RyaW5nKCIqIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQq
KSZ4bWxBdG9tKSBBdG9taWNTdHJpbmcoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmeG1sbnNBdG9tKSBBdG9t
aWNTdHJpbmcoInhtbG5zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4bGlua0F0b20pIEF0b21pY1N0cmluZygieGxp
bmsiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgICAgICBpbml0
aWFsaXplZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAppbmRleCBkM2U5MTgyNjkxMmU0MjZkNDEwNDc2YjE4MDg0MjJjMjY3NjliZGQ5Li5lNjJlNjMz
ZmJiNTdmZmRhM2IzMzliNTNhMGMxMzNhYzA5M2E5NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cApAQCAtNzQ2LDYgKzc0Niw4IEBACiAgICAgICAgIHsKICAgICAgICAg
ICAnYWN0aW9uX25hbWUnOiAnSFRNTE5hbWVzJywKICAgICAgICAgICAnaW5wdXRzJzogWworICAg
ICAgICAgICAgJy4uL2JpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtJywKKyAgICAgICAgICAgICcu
Li9iaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbScsCiAgICAgICAgICAgICAnLi4vZG9t
L21ha2VfbmFtZXMucGwnLAogICAgICAgICAgICAgJy4uL2h0bWwvSFRNTFRhZ05hbWVzLmluJywK
ICAgICAgICAgICAgICcuLi9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbicsCkBAIC03NzMsNiAr
Nzc1LDggQEAKICAgICAgICAgewogICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdXZWJLaXRGb250
RmFtaWx5TmFtZXMnLAogICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vYmlu
ZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0nLAorICAgICAgICAgICAgJy4uL2JpbmRpbmdzL3Njcmlw
dHMvU3RhdGljU3RyaW5nLnBtJywKICAgICAgICAgICAgICcuLi9kb20vbWFrZV9uYW1lcy5wbCcs
CiAgICAgICAgICAgICAnLi4vY3NzL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5pbicsCiAgICAgICAg
ICAgXSwKQEAgLTc5NCw2ICs3OTgsOCBAQAogICAgICAgICB7CiAgICAgICAgICAgJ2FjdGlvbl9u
YW1lJzogJ1NWR05hbWVzJywKICAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJy4u
L2JpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtJywKKyAgICAgICAgICAgICcuLi9iaW5kaW5ncy9z
Y3JpcHRzL1N0YXRpY1N0cmluZy5wbScsCiAgICAgICAgICAgICAnLi4vZG9tL21ha2VfbmFtZXMu
cGwnLAogICAgICAgICAgICAgJy4uL3N2Zy9zdmd0YWdzLmluJywKICAgICAgICAgICAgICcuLi9z
dmcvc3ZnYXR0cnMuaW4nLApAQCAtODgyLDYgKzg4OCw4IEBACiAgICAgICAgIHsKICAgICAgICAg
ICAnYWN0aW9uX25hbWUnOiAnTWF0aE1MTmFtZXMnLAogICAgICAgICAgICdpbnB1dHMnOiBbCisg
ICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0nLAorICAgICAgICAgICAg
Jy4uL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtJywKICAgICAgICAgICAgICcuLi9k
b20vbWFrZV9uYW1lcy5wbCcsCiAgICAgICAgICAgICAnLi4vbWF0aG1sL21hdGh0YWdzLmluJywK
ICAgICAgICAgICAgICcuLi9tYXRobWwvbWF0aGF0dHJzLmluJywKQEAgLTEwMTYsNiArMTAyNCw4
IEBACiAgICAgICAgIHsKICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnWExpbmtOYW1lcycsCiAg
ICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRzL0hh
c2hlci5wbScsCisgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcu
cG0nLAogICAgICAgICAgICAgJy4uL2RvbS9tYWtlX25hbWVzLnBsJywKICAgICAgICAgICAgICcu
Li9zdmcveGxpbmthdHRycy5pbicsCiAgICAgICAgICAgXSwKQEAgLTEwMzcsNiArMTA0Nyw4IEBA
CiAgICAgICAgIHsKICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnWE1MTlNOYW1lcycsCiAgICAg
ICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRzL0hhc2hl
ci5wbScsCisgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0n
LAogICAgICAgICAgICAgJy4uL2RvbS9tYWtlX25hbWVzLnBsJywKICAgICAgICAgICAgICcuLi94
bWwveG1sbnNhdHRycy5pbicsCiAgICAgICAgICAgXSwKQEAgLTEwNTgsNiArMTA3MCw4IEBACiAg
ICAgICAgIHsKICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnWE1MTmFtZXMnLAogICAgICAgICAg
ICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0n
LAorICAgICAgICAgICAgJy4uL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtJywKICAg
ICAgICAgICAgICcuLi9kb20vbWFrZV9uYW1lcy5wbCcsCiAgICAgICAgICAgICAnLi4veG1sL3ht
bGF0dHJzLmluJywKICAgICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5IGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5CmluZGV4IGExYTQxMGYxZWE1MGMz
MTU0MmVhZDUxYmQzYWUwNDZlMWM1ZWMxOTMuLjgxM2I4NjQxOTYzNjY2ZTYyYmRmODI3OWUwYWU4
YWZkNThhMTIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Njcmlw
dHMvYWN0aW9uX21ha2VuYW1lcy5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9z
Y3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHkKQEAgLTEzMSw2ICsxMzEsOCBAQCBkZWYgbWFpbihh
cmdzKToKICAgICAgICAgICAgIGV2ZW50c0lucHV0ID0gaW5wdXRBYnNQb3NpeAogICAgICAgICBl
bGlmIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ05hbWVzLmluJyk6CiAgICAgICAgICAgICBvcHRp
b25zLmFwcGVuZChpbnB1dEFic1Bvc2l4KQorICAgICAgICBlbGlmIGlucHV0QmFzZW5hbWUuZW5k
c3dpdGgoJy5wbScpOgorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGFzc2VydCBGYWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvU3RhdGljU3RyaW5nLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzYxNzQ1MGNkZGRlMzMwYzUzMDU2NjRi
MDA2MzdjN2M3NWJmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbQpAQCAtMCwwICsxLDk0IEBACisjIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorCitwYWNrYWdlIFN0YXRpY1N0cmluZzsKKwordXNlIHN0cmljdDsKK3VzZSBIYXNoZXI7CisK
K3N1YiBHZW5lcmF0ZVN0cmluZ3MKK3sKKyAgICBteSAkc3RyaW5nc1JlZiA9IHNoaWZ0OworICAg
IG15ICVzdHJpbmdzID0gJSRzdHJpbmdzUmVmOworCisgICAgbXkgQHJlc3VsdCA9ICgpOworCisg
ICAgd2hpbGUgKCBteSAoJG5hbWUsICR2YWx1ZSkgPSBlYWNoICVzdHJpbmdzICkgeworICAgICAg
ICBteSAkY2hhcmFjdGVyTGlzdCA9IGpvaW4oIicsICciLCBzcGxpdCgiIiwgJHZhbHVlKSk7Cisg
ICAgICAgIHB1c2goQHJlc3VsdCwgInN0YXRpYyBjb25zdCBVQ2hhciAke25hbWV9U3RyaW5nMTZb
XSA9IHsgJyRjaGFyYWN0ZXJMaXN0JyB9O1xuIik7CisgICAgfQorCisgICAgcHVzaChAcmVzdWx0
LCAiXG4iKTsKKworICAgIHdoaWxlICggbXkgKCRuYW1lLCAkdmFsdWUpID0gZWFjaCAlc3RyaW5n
cyApIHsKKyAgICAgICAgcHVzaChAcmVzdWx0LCAic3RhdGljIGNvbnN0IExDaGFyICR7bmFtZX1T
dHJpbmc4W10gPSBcIiR7dmFsdWV9XCI7XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEByZXN1bHQs
ICJcbiIpOworCisgICAgd2hpbGUgKCBteSAoJG5hbWUsICR2YWx1ZSkgPSBlYWNoICVzdHJpbmdz
ICkgeworICAgICAgICBteSAkbGVuZ3RoID0gbGVuZ3RoKCR2YWx1ZSk7CisgICAgICAgIG15ICRo
YXNoID0gSGFzaGVyOjpHZW5lcmF0ZUhhc2hWYWx1ZSgkdmFsdWUpOworICAgICAgICBwdXNoKEBy
ZXN1bHQsIDw8RU5EKTsKK3N0YXRpYyBTdHJpbmdJbXBsOjpTdGF0aWNEYXRhICR7bmFtZX1EYXRh
ID0geworICAgIFN0cmluZ0ltcGw6OlN0YXRpY0RhdGE6OnNfaW5pdGlhbFJlZkNvdW50LAorICAg
ICRsZW5ndGgsCisgICAgJHtuYW1lfVN0cmluZzgsCisgICAgJHtuYW1lfVN0cmluZzE2LAorICAg
IFN0cmluZ0ltcGw6OlN0YXRpY0RhdGE6OnNfaW5pdGlhbEZsYWdzIHwgKCR7aGFzaH0gPDwgU3Ry
aW5nSW1wbDo6U3RhdGljRGF0YTo6c19oYXNoU2hpZnQpCit9OworRU5ECisgICAgfQorCisgICAg
cHVzaChAcmVzdWx0LCAiXG4iKTsKKworICAgIHdoaWxlICggbXkgKCRuYW1lLCAkdmFsdWUpID0g
ZWFjaCAlc3RyaW5ncyApIHsKKyAgICAgICAgcHVzaChAcmVzdWx0LCAic3RhdGljIFN0cmluZ0lt
cGwqICR7bmFtZX1JbXBsID0gcmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oJiR7bmFtZX1E
YXRhKTtcbiIpOworICAgIH0KKworICAgIHB1c2goQHJlc3VsdCwgIlxuIik7CisKKyAgICByZXR1
cm4gam9pbiAiIiwgQHJlc3VsdDsKK30KKworc3ViIEdlbmVyYXRlVmFsaWRhdGVTdHJpbmdzCit7
CisgICAgbXkgJHN0cmluZ3NSZWYgPSBzaGlmdDsKKyAgICBteSAlc3RyaW5ncyA9ICUkc3RyaW5n
c1JlZjsKKworICAgIG15IEByZXN1bHQgPSAoKTsKKworICAgIHB1c2goQHJlc3VsdCwgIiNpZm5k
ZWYgTkRFQlVHXG4iKTsKKworICAgIHdoaWxlICggbXkgKCRuYW1lLCAkdmFsdWUpID0gZWFjaCAl
c3RyaW5ncyApIHsKKyAgICAgICAgcHVzaChAcmVzdWx0LCAiICAgICR7bmFtZX1JbXBsLT5hc3Nl
cnRWYWxpZEhhc2goKTtcbiIpOworICAgIH0KKworICAgIHB1c2goQHJlc3VsdCwgIiNlbmRpZiAv
LyBOREVCVUdcbiIpOworCisgICAgcHVzaChAcmVzdWx0LCAiXG4iKTsKKworICAgIHJldHVybiBq
b2luICIiLCBAcmVzdWx0OworfQorCisxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3Bw
CmluZGV4IGRlNjBiZmIwN2UxMjI5OGRiYWZmMWZhYzc3OGQ0ZWE1ZDNiYmQ1ODEuLmI5ZDUxZWI0
NTdkN2Y5YTRjYWZmNjRhYTgzNjk3MTRhZDQ5Yjg0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5jcHAKQEAgLTE3MiwxNiArMTcyLDE0IEBAIHVuc2lnbmVkIFF1YWxpZmllZE5hbWU6
OlF1YWxpZmllZE5hbWVJbXBsOjpjb21wdXRlSGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc2hD
b21wb25lbnRzKGNvbXBvbmVudHMpOwogfQogCi12b2lkIGNyZWF0ZVF1YWxpZmllZE5hbWUodm9p
ZCogdGFyZ2V0QWRkcmVzcywgY29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQgbmFtZUxlbmd0aCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lTmFtZXNwYWNlKQordm9pZCBjcmVhdGVRdWFsaWZpZWRO
YW1lKHZvaWQqIHRhcmdldEFkZHJlc3MsIFN0cmluZ0ltcGwqIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZU5hbWVzcGFjZSkKIHsKLSAgICBBdG9taWNTdHJpbmcgYXRvbWljTmFtZShuYW1l
LCBuYW1lTGVuZ3RoLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBu
ZXcgKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRhcmdldEFkZHJlc3MpKSBRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCBhdG9taWNOYW1lLCBuYW1lTmFtZXNwYWNlKTsKKyAgICBuZXcgKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHRhcmdldEFkZHJlc3MpKSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBB
dG9taWNTdHJpbmcobmFtZSksIG5hbWVOYW1lc3BhY2UpOwogfQogCi12b2lkIGNyZWF0ZVF1YWxp
ZmllZE5hbWUodm9pZCogdGFyZ2V0QWRkcmVzcywgY29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQg
bmFtZUxlbmd0aCkKK3ZvaWQgY3JlYXRlUXVhbGlmaWVkTmFtZSh2b2lkKiB0YXJnZXRBZGRyZXNz
LCBTdHJpbmdJbXBsKiBuYW1lKQogewotICAgIEF0b21pY1N0cmluZyBhdG9taWNOYW1lKG5hbWUs
IG5hbWVMZW5ndGgsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIG5l
dyAocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGFyZ2V0QWRkcmVzcykpIFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sIGF0b21pY05hbWUsIG51bGxBdG9tKTsKKyAgICBuZXcgKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHRhcmdldEFkZHJlc3MpKSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBBdG9taWNT
dHJpbmcobmFtZSksIG51bGxBdG9tKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmgKaW5kZXggYzNjZDI5ZmRlY2FiY2FkNzIwMzczYzU3NTBhOTQ4NmQzZjlmMTAyZC4uMzg2NzMx
NTRhNjdmMTY2ODRkM2I0NGY1ZDU5OWU2OTdkZTg2ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5oCkBAIC0xNDQsOCArMTQ0LDggQEAgc3RydWN0IFF1YWxpZmllZE5hbWVIYXNoIHsK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOwogfTsKIAotdm9pZCBjcmVhdGVRdWFsaWZpZWROYW1lKHZvaWQqIHRhcmdldEFkZHJlc3Ms
IGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIG5hbWVMZW5ndGgpOwotdm9pZCBjcmVhdGVRdWFs
aWZpZWROYW1lKHZvaWQqIHRhcmdldEFkZHJlc3MsIGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVk
IG5hbWVMZW5ndGgsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZU5hbWVzcGFjZSk7Cit2b2lkIGNy
ZWF0ZVF1YWxpZmllZE5hbWUodm9pZCogdGFyZ2V0QWRkcmVzcywgU3RyaW5nSW1wbCogbmFtZSk7
Cit2b2lkIGNyZWF0ZVF1YWxpZmllZE5hbWUodm9pZCogdGFyZ2V0QWRkcmVzcywgU3RyaW5nSW1w
bCogbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lTmFtZXNwYWNlKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGI5MTAzZTU0ZmUxNzdmZjNjMTU4OGMyMTNkMGEzMTk3
ZmUzOGYwMGYuLmYwNDI4MDNhMjJhYzRjZTdhYTVjYTA5MWViNjQ0Mjc0MjIxYThlZjAgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0zMSw2ICszMSw3IEBACiAKIHVzZSBzdHJpY3Q7CiAK
K3VzZSBTdGF0aWNTdHJpbmc7CiB1c2UgQ29uZmlnOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBG
aWxlOjpQYXRoOwpAQCAtNTQsNiArNTUsNyBAQCBteSAlZW5hYmxlZFRhZ3MgPSAoKTsKIG15ICVl
bmFibGVkQXR0cnMgPSAoKTsKIG15ICVhbGxUYWdzID0gKCk7CiBteSAlYWxsQXR0cnMgPSAoKTsK
K215ICVhbGxTdHJpbmdzID0gKCk7CiBteSAlcGFyYW1ldGVycyA9ICgpOwogbXkgJGV4dHJhRGVm
aW5lcyA9IDA7CiBteSAkaW5pdERlZmF1bHRzID0gMTsKQEAgLTExNSwxNCArMTE3LDIyIEBAIGlm
IChsZW5ndGgoJGZvbnROYW1lc0luKSkgewogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAg
ICAgcHJpbnRDcHBIZWFkKCRGLCAiQ1NTIiwgJGZhbWlseU5hbWVzRmlsZUJhc2UsICJXVEYiKTsK
IAorICAgIHByaW50IEYgU3RhdGljU3RyaW5nOjpHZW5lcmF0ZVN0cmluZ3MoXCVwYXJhbWV0ZXJz
KTsKKwogICAgIHdoaWxlICggbXkgKCRuYW1lLCAkaWRlbnRpZmllcikgPSBlYWNoICVwYXJhbWV0
ZXJzICkgewogICAgICAgICBwcmludCBGICJERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgJG5h
bWUpXG4iOwogICAgIH0KIAogICAgIHByaW50SW5pdCgkRiwgMCk7CiAKKyAgICBwcmludCBGICJc
biI7CisgICAgcHJpbnQgRiBTdGF0aWNTdHJpbmc6OkdlbmVyYXRlVmFsaWRhdGVTdHJpbmdzKFwl
cGFyYW1ldGVycyk7CisKKyAgICBwcmludCBGICIgICAgLy8gTm90ZTogVGhlc2UgQXRvbWljU3Ry
aW5ncyBtaWdodCBlbmQgdXAgd2l0aCBkaWZmZXJlbnQgU3RyaW5nSW1wbHMsXG4iOworICAgIHBy
aW50IEYgIiAgICAvLyBidXQgdGhleSB3aWxsIGFsd2F5cyBlbmQgdXAgd2l0aCBzdGF0aWMgU3Ry
aW5nSW1wbHMuXG4iOworCiAgICAgd2hpbGUgKCBteSAoJG5hbWUsICRpZGVudGlmaWVyKSA9IGVh
Y2ggJXBhcmFtZXRlcnMgKSB7Ci0gICAgICAgIHByaW50IEYgIiAgICBuZXcgKCh2b2lkKikmJG5h
bWUpIEF0b21pY1N0cmluZyhcIiRpZGVudGlmaWVyXCIpO1xuIjsKKyAgICAgICAgcHJpbnQgRiAi
ICAgIG5ldyAoKHZvaWQqKSYkbmFtZSkgQXRvbWljU3RyaW5nKCR7bmFtZX1JbXBsKTtcbiI7CiAg
ICAgfQogCiAgICAgcHJpbnQgRiAifVxufVxufVxuIjsKQEAgLTEzNSwxMSArMTQ1LDEzIEBAIGRp
ZSAiWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2YgLS10YWdzIDxmaWxlPiBvciAtLWF0
dHJzIDxmaWxlPiIgdW5sZXNzIChsCiBpZiAobGVuZ3RoKCR0YWdzRmlsZSkpIHsKICAgICAlYWxs
VGFncyA9ICV7cmVhZFRhZ3MoJHRhZ3NGaWxlLCAwKX07CiAgICAgJWVuYWJsZWRUYWdzID0gJXty
ZWFkVGFncygkdGFnc0ZpbGUsIDEpfTsKKyAgICBuYW1lc1RvU3RyaW5ncyhcJWFsbFRhZ3MsIFwl
YWxsU3RyaW5ncyk7CiB9CiAKIGlmIChsZW5ndGgoJGF0dHJzRmlsZSkpIHsKICAgICAlYWxsQXR0
cnMgPSAle3JlYWRBdHRycygkYXR0cnNGaWxlLCAwKX07CiAgICAgJWVuYWJsZWRBdHRycyA9ICV7
cmVhZEF0dHJzKCRhdHRyc0ZpbGUsIDEpfTsKKyAgICBuYW1lc1RvU3RyaW5ncyhcJWFsbEF0dHJz
LCBcJWFsbFN0cmluZ3MpOwogfQogCiBkaWUgIllvdSBtdXN0IHNwZWNpZnkgYSBuYW1lc3BhY2Ug
KGUuZy4gU1ZHKSBmb3IgPG5hbWVzcGFjZT5OYW1lcy5oIiB1bmxlc3MgJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfTsKQEAgLTIxMiw2ICsyMjQsMzEgQEAgc3ViIGRlZmF1bHRJbnRlcmZhY2VOYW1lCiAK
ICMjIyBQYXJzaW5nIGhhbmRsZXJzCiAKK3N1YiB2YWx1ZUZvck5hbWUKK3sKKyAgICBteSAkbmFt
ZSA9IHNoaWZ0OworICAgIG15ICR2YWx1ZSA9ICRleHRlbnNpb25BdHRyc3skbmFtZX07CisKKyAg
ICBpZiAoISR2YWx1ZSkgeworICAgICAgICAkdmFsdWUgPSAkbmFtZTsKKyAgICAgICAgJHZhbHVl
ID1+IHMvXy8tL2c7CisgICAgfQorCisgICAgcmV0dXJuICR2YWx1ZTsKK30KKworc3ViIG5hbWVz
VG9TdHJpbmdzCit7CisgICAgbXkgJG5hbWVzUmVmID0gc2hpZnQ7CisgICAgbXkgJHN0cmluZ3NS
ZWYgPSBzaGlmdDsKKworICAgIG15ICVuYW1lcyA9ICUkbmFtZXNSZWY7CisKKyAgICBmb3IgbXkg
JG5hbWUgKGtleXMgJW5hbWVzKSB7CisgICAgICAgICRzdHJpbmdzUmVmLT57JG5hbWV9ID0gdmFs
dWVGb3JOYW1lKCRuYW1lKTsKKyAgICB9Cit9CisKIHN1YiB0YWdzSGFuZGxlcgogewogICAgIG15
ICgkdGFnLCAkcHJvcGVydHksICR2YWx1ZSkgPSBAXzsKQEAgLTYzNiw2ICs2NzMsOCBAQCBzdWIg
cHJpbnROYW1lc0NwcEZpbGUKIAogICAgIHByaW50IEYgIkRFRklORV9HTE9CQUwoQXRvbWljU3Ry
aW5nLCAke2xvd2VyTmFtZXNwYWNlfU5hbWVzcGFjZVVSSSlcblxuIjsKIAorICAgIHByaW50IEYg
U3RhdGljU3RyaW5nOjpHZW5lcmF0ZVN0cmluZ3MoXCVhbGxTdHJpbmdzKTsKKwogICAgIGlmIChr
ZXlzICVhbGxUYWdzKSB7CiAgICAgICAgIHByaW50IEYgIi8vIFRhZ3NcbiI7CiAgICAgICAgIGZv
ciBteSAkbmFtZSAoc29ydCBrZXlzICVhbGxUYWdzKSB7CkBAIC02NzIsNyArNzExLDEwIEBAIHN1
YiBwcmludE5hbWVzQ3BwRmlsZQogICAgIHByaW50KEYgIiAgICBBdG9taWNTdHJpbmcgJHtsb3dl
ck5hbWVzcGFjZX1OUyhcIiRwYXJhbWV0ZXJze25hbWVzcGFjZVVSSX1cIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7XG5cbiIpOwogCiAgICAgcHJpbnQoRiAiICAgIC8vIE5h
bWVzcGFjZVxuIik7Ci0gICAgcHJpbnQoRiAiICAgIG5ldyAoKHZvaWQqKSYke2xvd2VyTmFtZXNw
YWNlfU5hbWVzcGFjZVVSSSkgQXRvbWljU3RyaW5nKCR7bG93ZXJOYW1lc3BhY2V9TlMpO1xuXG4i
KTsKKyAgICBwcmludChGICIgICAgbmV3ICgodm9pZCopJiR7bG93ZXJOYW1lc3BhY2V9TmFtZXNw
YWNlVVJJKSBBdG9taWNTdHJpbmcoJHtsb3dlck5hbWVzcGFjZX1OUyk7XG4iKTsKKyAgICBwcmlu
dChGICJcbiIpOworICAgIHByaW50IEYgU3RhdGljU3RyaW5nOjpHZW5lcmF0ZVZhbGlkYXRlU3Ry
aW5ncyhcJWFsbFN0cmluZ3MpOworCiAgICAgaWYgKGtleXMgJWFsbFRhZ3MpIHsKICAgICAgICAg
bXkgJHRhZ3NOYW1lc3BhY2UgPSAkcGFyYW1ldGVyc3t0YWdzTnVsbE5hbWVzcGFjZX0gPyAibnVs
bEF0b20iIDogIiR7bG93ZXJOYW1lc3BhY2V9TlMiOwogICAgICAgICBwcmludERlZmluaXRpb25z
KCRGLCBcJWFsbFRhZ3MsICJ0YWdzIiwgJHRhZ3NOYW1lc3BhY2UpOwpAQCAtNzc0LDE3ICs4MTYs
MTEgQEAgc3ViIHByaW50RGVmaW5pdGlvbnMKICAgICBwcmludCBGICIgICAgLy8gIiAuIHVjZmly
c3QoJHR5cGUpIC4gIlxuIjsKIAogICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICUkbmFtZXNS
ZWYpIHsKLSAgICAgICAgbXkgJHJlYWxOYW1lID0gJGV4dGVuc2lvbkF0dHJzeyRuYW1lfTsKLSAg
ICAgICAgaWYgKCEkcmVhbE5hbWUpIHsKLSAgICAgICAgICAgICRyZWFsTmFtZSA9ICRuYW1lOwot
ICAgICAgICAgICAgJHJlYWxOYW1lID1+IHMvXy8tL2c7Ci0gICAgICAgIH0KLQogICAgICAgICAj
IFRvIGdlbmVyYXRlIGxlc3MgY29kZSBpbiBpbml0KCksIHRoZSBjb21tb24gY2FzZSBvZiBudWxs
QXRvbSBmb3IgdGhlIG5hbWVzcGFjZSwgd2UgY2FsbCBjcmVhdGVRdWFsaWZpZWROYW1lKCkgd2l0
aG91dCBwYXNzaW5nICRuYW1lc3BhY2VVUkkuCiAgICAgICAgIGlmICgkbmFtZXNwYWNlVVJJIGVx
ICJudWxsQXRvbSIpIHsKLSAgICAgICAgICAgIHByaW50IEYgIiAgICBjcmVhdGVRdWFsaWZpZWRO
YW1lKCh2b2lkKikmJG5hbWUiLCIke3Nob3J0Q2FtZWxUeXBlfSwgXCIkcmVhbE5hbWVcIiwgIiwg
bGVuZ3RoICRyZWFsTmFtZSAsIik7XG4iOworICAgICAgICAgICAgcHJpbnQgRiAiICAgIGNyZWF0
ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRDYW1lbFR5cGV9LCAke25hbWV9
SW1wbCk7XG4iOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnQgRiAiICAgIGNy
ZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRDYW1lbFR5cGV9LCBcIiRy
ZWFsTmFtZVwiLCAiLCBsZW5ndGggJHJlYWxOYW1lICwiLCAkbmFtZXNwYWNlVVJJKTtcbiI7Cisg
ICAgICAgICAgICBwcmludCBGICIgICAgY3JlYXRlUXVhbGlmaWVkTmFtZSgodm9pZCopJiRuYW1l
IiwiJHtzaG9ydENhbWVsVHlwZX0sICR7bmFtZX1JbXBsLCAkbmFtZXNwYWNlVVJJKTtcbiI7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDg4NTlkYzA1MWFjN2My
MzdlOGM0ZmFlMGY4ZDM3NTU3NzFiOTRkNmQuLjBhNTRlMmYyZjdmMjgxMTgxZTAwOGI3ODM4YmZk
ZTY4MDE3Yjg2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xNDksNiArMTQ5LDIwIEBAIHN0
YXRpYyBpbmxpbmUgZmxvYXQgcGFyZW50VGV4dFpvb21GYWN0b3IoRnJhbWUqIGZyYW1lKQogICAg
IHJldHVybiBwYXJlbnQtPnRleHRab29tRmFjdG9yKCk7CiB9CiAKK3ZvaWQgaW5pdCgpCit7Cisg
ICAgQXRvbWljU3RyaW5nOjppbml0KCk7CisgICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOworICAg
IEhUTUxOYW1lczo6aW5pdCgpOworICAgIFNWR05hbWVzOjppbml0KCk7CisgICAgWExpbmtOYW1l
czo6aW5pdCgpOworICAgIE1hdGhNTE5hbWVzOjppbml0KCk7CisgICAgWE1MTlNOYW1lczo6aW5p
dCgpOworICAgIFhNTE5hbWVzOjppbml0KCk7CisgICAgV2ViS2l0Rm9udEZhbWlseU5hbWVzOjpp
bml0KCk7CisgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKK30KKwogaW5saW5lIEZyYW1l
OjpGcmFtZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwg
RnJhbWVMb2FkZXJDbGllbnQqIGZyYW1lTG9hZGVyQ2xpZW50KQogICAgIDogbV9wYWdlKHBhZ2Up
CiAgICAgLCBtX3RyZWVOb2RlKHRoaXMsIHBhcmVudEZyb21Pd25lckVsZW1lbnQob3duZXJFbGVt
ZW50KSkKQEAgLTE2OSwxNiArMTgzLDcgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQYWdlKiBwYWdl
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXIKICAgICAs
IG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCgwKQogewogICAg
IEFTU0VSVChwYWdlKTsKLSAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKLSAgICBIVE1MTmFtZXM6
OmluaXQoKTsKLSAgICBRdWFsaWZpZWROYW1lOjppbml0KCk7Ci0gICAgTWVkaWFGZWF0dXJlTmFt
ZXM6OmluaXQoKTsKLSAgICBTVkdOYW1lczo6aW5pdCgpOwotICAgIFhMaW5rTmFtZXM6OmluaXQo
KTsKLSAgICBNYXRoTUxOYW1lczo6aW5pdCgpOwotICAgIFhNTE5TTmFtZXM6OmluaXQoKTsKLSAg
ICBYTUxOYW1lczo6aW5pdCgpOwotICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lczo6aW5pdCgpOwor
ICAgIFdlYkNvcmU6OmluaXQoKTsKIAogICAgIGlmICghb3duZXJFbGVtZW50KSB7CiAjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggM2Q5MDliNTk1YmM5NDk1
NDk3MjRkY2YxZTBlMDU5MTVhZmY1NDlkYi4uYjIzNDlhYjE0ZGQyYWZkNjFhMWVhNWM4NzI0YmNj
OTllM2JhODhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODUsNiArODUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUZsYWdzOwog
CisgICAgdm9pZCBpbml0KCk7CisKICAgICBjbGFzcyBGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEZyYW1lPiwgcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGUoUGFnZSosIEhUTUxGcmFtZU93
bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViS2l0LmNwcAppbmRleCBlMjZmYjhlZjlkNWViNjYyZDY2NDgwMjc4NTdkYTdkYjE3YjA0YmQz
Li43OThhY2RiNGNhYTI2ZTgyNjAyMzQzNTVjNDRiNGQyZWEyZTgzM2Q3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJL
aXQuaCIKIAogI2luY2x1ZGUgIkV2ZW50VHJhY2VyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJJbWFnZURlY29kaW5nU3RvcmUuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0U3VwcG9y
dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE0MiwxMSArMTQzLDEyIEBAIHZvaWQgaW5p
dGlhbGl6ZVdpdGhvdXRWOChQbGF0Zm9ybSogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAgIEFT
U0VSVCghc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOwogICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBw
b3J0ID0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0OwogICAgIFBsYXRmb3JtOjppbml0aWFsaXplKHNf
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KTsKLSAgICBXZWJDb3JlOjpJbWFnZURlY29kaW5nU3RvcmU6
OmluaXRpYWxpemVPbmNlKCk7CiAKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgV1RGOjpBdG9taWNTdHJpbmc6Omlu
aXQoKTsKKworICAgIFdlYkNvcmU6OmluaXQoKTsKKyAgICBXZWJDb3JlOjpJbWFnZURlY29kaW5n
U3RvcmU6OmluaXRpYWxpemVPbmNlKCk7CiAKICAgICAvLyBUaGVyZSBhcmUgc29tZSBjb2RlIHBh
dGhzIChmb3IgZXhhbXBsZSwgcnVubmluZyBXZWJLaXQgaW4gdGhlIGJyb3dzZXIKICAgICAvLyBw
cm9jZXNzIGFuZCBjYWxsaW5nIGludG8gTG9jYWxTdG9yYWdlIGJlZm9yZSBhbnl0aGluZyBlbHNl
KSB3aGVyZSB0aGUKQEAgLTE3Miw3ICsxNzQsNiBAQCB2b2lkIGluaXRpYWxpemVXaXRob3V0Vjgo
UGxhdGZvcm0qIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKICNlbmRpZgogfQogCi0KIHZvaWQgc2h1
dGRvd24oKQogewogICAgIC8vIFdlYktpdCBtaWdodCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0
aG91dCBWOCwgc28gYmUgY2FyZWZ1bCBub3QgdG8gaW52b2tlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194148</attachid>
            <date>2013-03-20 17:24:56 -0700</date>
            <delta_ts>2013-03-20 17:49:58 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-112769-20130320172045.patch</filename>
            <type>text/plain</type>
            <size>9573</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5j
cHAKaW5kZXggYzM3ZWFmMGM1N2I4ZjhlMjI5NDZhOTdmMDczYzkzMWNlODgxN2EzZS4uYjNlMWM5
NTNiODI1OGZmMGMxZDc5ZjJiYjQ0NzFiMDNmMWM2ZWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcApAQCAtNDMzLDYgKzQzMyw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIFN0cmluZ0ltcGwq
IHJlc3VsdCA9ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAgICBpZiAocmVzdWx0
ID09IHIpCiAgICAgICAgIHItPnNldElzQXRvbWljKHRydWUpOworICAgIEFTU0VSVChyLT5pc1N0
YXRpYygpID09IHJlc3VsdC0+aXNTdGF0aWMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAzMzNhNTVhZTk1ZWRlNzQwMTNmZWMzOGNiNmM3
MGM4MjQ1YzE3MGYwLi5mOWUxZDRlNGZjODVmNmJjZjVhNTQwMDFjMmFlOTcyZTg5N2Y5M2NkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTIwLDEzICs1MjAsMTQgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFz
aEZsYWdJc0F0b21pYzsgfQogICAgIHZvaWQgc2V0SXNBdG9taWMoYm9vbCBpc0lkZW50aWZpZXIp
CiAgICAgewotICAgICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwogICAgICAgICBpZiAoaXNJZGVu
dGlmaWVyKQogICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWlj
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxh
Z0lzQXRvbWljOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBt
X3JlZkNvdW50ICYgc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsgfQorCiAjaWZkZWYgU1RS
SU5HX1NUQVRTCiAgICAgYm9vbCBpc1N1YlN0cmluZygpIGNvbnN0IHsgcmV0dXJuICBidWZmZXJP
d25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmc7IH0KICNlbmRpZgpAQCAtNzQ2LDcgKzc0Nyw2
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfY29weUNoYXJzSW5saW5l
Q3V0T2ZmID0gMjA7CiAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRGbGFncyAm
IHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXApOyB9Ci0gICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVmQ291bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFVDaGFyUHJlZGljYXRlPiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUpOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOwog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBORVZFUl9JTkxJTkUgY29uc3QgVUNoYXIqIGdldERh
dGExNlNsb3dDYXNlKCkgY29uc3Q7CkBAIC03NzksMTIgKzc3OSwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAg
ICAgICBjb25zdCBMQ2hhciogbV9kYXRhODsKLSAgICAgICAgdm9pZCogbV9idWZmZXI7CisgICAg
ICAgIGNvbnN0IFVDaGFyKiBtX2NvcHlEYXRhMTY7CiAgICAgICAgIHVuc2lnbmVkIG1faGFzaEFu
ZEZsYWdzOwogCiAgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBtaW1pYyBDb25zdHJ1Y3RGcm9tTGl0
ZXJhbC4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbFJlZkNvdW50ID0g
c19yZWZDb3VudEluY3JlbWVudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5p
dGlhbEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCB8IHNfaGFz
aEZsYWdIYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2luaXRpYWxSZWZDb3VudCA9IHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZs
YWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0hhczE2Qml0U2hhZG93IHwgQnVmZmVySW50ZXJuYWwg
fCBzX2hhc2hGbGFnSGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyOwogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19oYXNoU2hpZnQgPSBzX2ZsYWdDb3VudDsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAppbmRleCAyZTFiOTU1YWNkMTRlZDIzMTJmZWIy
NjNmNjYyZGJkNWMxMGU0OTEwLi5iNGMxYzgzZGU4ZjM5ZTRhYmVmYzQ3Y2E3NjljNGY4ZmZhM2Uy
NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKQEAgLTI0LDYgKzI0LDcg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaW5nU3RhdGljcy5o
IgogCiAjaWZkZWYgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dDQwogI2RlZmluZSBBVE9N
SUNTVFJJTkdfSElERV9HTE9CQUxTIDEKQEAgLTczLDIyICs3NCwzMiBAQCBORVZFUl9JTkxJTkUg
dW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaFNsb3dDYXNlKCkgY29uc3QKIHZvaWQgQXRvbWljU3Ry
aW5nOjppbml0KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKLSAgICBpZiAoIWlu
aXRpYWxpemVkKSB7Ci0gICAgICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIG5vdCB0aHJlYWQgc2Fm
ZSwgc28gdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCBm
aXJzdC4KLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaW5pdGlhbGl6
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CiAKLSAgICAgICAg
Ly8gVXNlIHBsYWNlbWVudCBuZXcgdG8gaW5pdGlhbGl6ZSB0aGUgZ2xvYmFscy4KLSAgICAgICAg
bmV3IChOb3ROdWxsLCAodm9pZCopJm51bGxBdG9tKSBBdG9taWNTdHJpbmc7Ci0gICAgICAgIG5l
dyAoTm90TnVsbCwgKHZvaWQqKSZlbXB0eUF0b20pIEF0b21pY1N0cmluZygiIik7Ci0gICAgICAg
IG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ0ZXh0QXRvbSkgQXRvbWljU3RyaW5nKCIjdGV4dCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICBuZXcgKE5vdE51bGws
ICh2b2lkKikmY29tbWVudEF0b20pIEF0b21pY1N0cmluZygiI2NvbW1lbnQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCop
JnN0YXJBdG9tKSBBdG9taWNTdHJpbmcoIioiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnhtbEF0b20pIEF0b21pY1N0
cmluZygieG1sIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAg
IG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4bWxuc0F0b20pIEF0b21pY1N0cmluZygieG1sbnMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgbmV3IChOb3ROdWxs
LCAodm9pZCopJnhsaW5rQXRvbSkgQXRvbWljU3RyaW5nKCJ4bGluayIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KKyAgICBuZXcgKE5vdE51bGwsICh2b2lk
KikmbnVsbEF0b20pIEF0b21pY1N0cmluZzsKKyAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmZW1w
dHlBdG9tKSBBdG9taWNTdHJpbmcoIiIpOworfQorCit2b2lkIFN0cmluZ1N0YXRpY3M6OmluaXQo
KQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOworICAgIGlmIChpbml0aWFsaXplZCkK
KyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGFsbG9jYXRl
ZCBhdCBjb21waWxlIHRpbWUuCisgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnRleHRBdG9tKSBB
dG9taWNTdHJpbmcoIiN0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJmNvbW1lbnRBdG9tKSBBdG9taWNTdHJpbmcoIiNj
b21tZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgbmV3IChO
b3ROdWxsLCAodm9pZCopJnN0YXJBdG9tKSBBdG9taWNTdHJpbmcoIioiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmeG1sQXRv
bSkgQXRvbWljU3RyaW5nKCJ4bWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmeG1sbnNBdG9tKSBBdG9taWNTdHJpbmcoInht
bG5zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgbmV3IChOb3RO
dWxsLCAodm9pZCopJnhsaW5rQXRvbSkgQXRvbWljU3RyaW5nKCJ4bGluayIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtCmluZGV4IGExMGUzYzgyZjZhYTdlZjZlODZm
NTVhNTYyMGQ0MTI1YjU1YzY2ZDguLjdmYzJhZDJmOWM0ZDg0Y2EzNGVjMGQyOWQwNmMzYzgyYzNk
MWU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGlj
U3RyaW5nLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3Ry
aW5nLnBtCkBAIC0zNCw2ICszNCwxMyBAQCBzdWIgR2VuZXJhdGVTdHJpbmdzKCQpCiAgICAgbXkg
QHJlc3VsdCA9ICgpOwogCiAgICAgd2hpbGUgKCBteSAoJG5hbWUsICR2YWx1ZSkgPSBlYWNoICVz
dHJpbmdzICkgeworICAgICAgICBteSAkY2hhcmFjdGVyTGlzdCA9IGpvaW4oIicsICciLCBzcGxp
dCgiIiwgJHZhbHVlKSk7CisgICAgICAgIHB1c2goQHJlc3VsdCwgInN0YXRpYyBjb25zdCBVQ2hh
ciAke25hbWV9U3RyaW5nMTZbXSA9IHsgJyRjaGFyYWN0ZXJMaXN0JywgMCB9O1xuIik7CisgICAg
fQorCisgICAgcHVzaChAcmVzdWx0LCAiXG4iKTsKKworICAgIHdoaWxlICggbXkgKCRuYW1lLCAk
dmFsdWUpID0gZWFjaCAlc3RyaW5ncyApIHsKICAgICAgICAgcHVzaChAcmVzdWx0LCAic3RhdGlj
IGNvbnN0IExDaGFyICR7bmFtZX1TdHJpbmc4W10gPSBcIiR7dmFsdWV9XCI7XG4iKTsKICAgICB9
CiAKQEAgLTQ3LDcgKzU0LDcgQEAgc3RhdGljIFN0cmluZ0ltcGw6OlN0YXRpY0FTQ0lJTGl0ZXJh
bCAke25hbWV9RGF0YSA9IHsKICAgICBTdHJpbmdJbXBsOjpTdGF0aWNBU0NJSUxpdGVyYWw6OnNf
aW5pdGlhbFJlZkNvdW50LAogICAgICRsZW5ndGgsCiAgICAgJHtuYW1lfVN0cmluZzgsCi0gICAg
MCwKKyAgICAke25hbWV9U3RyaW5nMTYsCiAgICAgU3RyaW5nSW1wbDo6U3RhdGljQVNDSUlMaXRl
cmFsOjpzX2luaXRpYWxGbGFncyB8ICgke2hhc2h9IDw8IFN0cmluZ0ltcGw6OlN0YXRpY0FTQ0lJ
TGl0ZXJhbDo6c19oYXNoU2hpZnQpCiB9OwogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDg4
NTlkYzA1MWFjN2MyMzdlOGM0ZmFlMGY4ZDM3NTU3NzFiOTRkNmQuLjM5ZWZkMTNkZDI3MzE5YTlj
YjI3NGE3Njk2NWI4YzhkMzIxMTUzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05NSw2ICs5
NSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTE0OSw2ICsx
NTAsMjEgQEAgc3RhdGljIGlubGluZSBmbG9hdCBwYXJlbnRUZXh0Wm9vbUZhY3RvcihGcmFtZSog
ZnJhbWUpCiAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFpvb21GYWN0b3IoKTsKIH0KIAordm9pZCBp
bml0KCkKK3sKKyAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKKyAgICBRdWFsaWZpZWROYW1lOjpp
bml0KCk7CisgICAgSFRNTE5hbWVzOjppbml0KCk7CisgICAgU1ZHTmFtZXM6OmluaXQoKTsKKyAg
ICBYTGlua05hbWVzOjppbml0KCk7CisgICAgTWF0aE1MTmFtZXM6OmluaXQoKTsKKyAgICBYTUxO
U05hbWVzOjppbml0KCk7CisgICAgWE1MTmFtZXM6OmluaXQoKTsKKyAgICBXZWJLaXRGb250RmFt
aWx5TmFtZXM6OmluaXQoKTsKKyAgICBNZWRpYUZlYXR1cmVOYW1lczo6aW5pdCgpOworICAgIFdU
Rjo6U3RyaW5nU3RhdGljczo6aW5pdCgpOworfQorCiBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2Uq
IHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlckNs
aWVudCogZnJhbWVMb2FkZXJDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fdHJl
ZU5vZGUodGhpcywgcGFyZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpKQpAQCAtMTY5
LDE2ICsxODUsNyBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgogICAgICwgbV9hY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50KDApCiB7CiAgICAgQVNTRVJUKHBhZ2Up
OwotICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwotICAgIEhUTUxOYW1lczo6aW5pdCgpOwotICAg
IFF1YWxpZmllZE5hbWU6OmluaXQoKTsKLSAgICBNZWRpYUZlYXR1cmVOYW1lczo6aW5pdCgpOwot
ICAgIFNWR05hbWVzOjppbml0KCk7Ci0gICAgWExpbmtOYW1lczo6aW5pdCgpOwotICAgIE1hdGhN
TE5hbWVzOjppbml0KCk7Ci0gICAgWE1MTlNOYW1lczo6aW5pdCgpOwotICAgIFhNTE5hbWVzOjpp
bml0KCk7Ci0gICAgV2ViS2l0Rm9udEZhbWlseU5hbWVzOjppbml0KCk7CisgICAgV2ViQ29yZTo6
aW5pdCgpOwogCiAgICAgaWYgKCFvd25lckVsZW1lbnQpIHsKICNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAzZDkwOWI1OTViYzk0OTU0OTcyNGRjZjFlMGUw
NTkxNWFmZjU0OWRiLi5iMjM0OWFiMTRkZDJhZmQ2MWExZWE1Yzg3MjRiY2M5OWUzYmE4OGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCkBAIC04NSw2ICs4NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlRmxhZ3M7CiAKKyAgICB2b2lkIGlu
aXQoKTsKKwogICAgIGNsYXNzIEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RnJhbWU+LCBwdWJs
aWMgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZShQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
RnJhbWVMb2FkZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCmlu
ZGV4IGUyNmZiOGVmOWQ1ZWI2NjJkNjY0ODAyNzg1N2RhN2RiMTdiMDRiZDMuLjgzMTgyOWUyZDVk
OGRhMTRlY2JiODQ0OWZiMTBjNDBhYWQyYjFlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViS2l0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYktpdC5oIgogCiAjaW5j
bHVkZSAiRXZlbnRUcmFjZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkltYWdl
RGVjb2RpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RTdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgpAQCAtMTQyLDExICsxNDMsMTEgQEAgdm9pZCBpbml0aWFsaXplV2l0aG91
dFY4KFBsYXRmb3JtKiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiAgICAgQVNTRVJUKCFzX3dlYktp
dFBsYXRmb3JtU3VwcG9ydCk7CiAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQgPSB3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQ7CiAgICAgUGxhdGZvcm06OmluaXRpYWxpemUoc193ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQpOwotICAgIFdlYkNvcmU6OkltYWdlRGVjb2RpbmdTdG9yZTo6aW5pdGlhbGl6ZU9u
Y2UoKTsKIAogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKLSAgICBXVEY6OkF0b21pY1N0cmluZzo6aW5pdCgpOworICAgIFdl
YkNvcmU6OmluaXQoKTsKKyAgICBXZWJDb3JlOjpJbWFnZURlY29kaW5nU3RvcmU6OmluaXRpYWxp
emVPbmNlKCk7CiAKICAgICAvLyBUaGVyZSBhcmUgc29tZSBjb2RlIHBhdGhzIChmb3IgZXhhbXBs
ZSwgcnVubmluZyBXZWJLaXQgaW4gdGhlIGJyb3dzZXIKICAgICAvLyBwcm9jZXNzIGFuZCBjYWxs
aW5nIGludG8gTG9jYWxTdG9yYWdlIGJlZm9yZSBhbnl0aGluZyBlbHNlKSB3aGVyZSB0aGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194153</attachid>
            <date>2013-03-20 17:50:00 -0700</date>
            <delta_ts>2013-03-20 17:55:38 -0700</delta_ts>
            <desc>works in the Chromium port</desc>
            <filename>bug-112769-20130320174550.patch</filename>
            <type>text/plain</type>
            <size>11876</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5n
eXBpIGIvU291cmNlL1dURi9XVEYuZ3lwaQppbmRleCAwYjM5NmZjMWZiNTY1YmY0ODM1NTgwOTQ4
YTBhNTI1ODdkYzJlYzkwLi5mOWM0MDJmYjFkZTFjYzE0ZmMyNGEwNmNmZWQ1NDQ4MmUyYjg5MDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5
cGkKQEAgLTI1NSw2ICsyNTUsNyBAQAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuY3BwJywKICAgICAgICAgICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAnd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0
L1N0cmluZ1N0YXRpY3MuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvV1RGU3RyaW5nLmNwcCcs
CiAgICAgICAgICAgICAnd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcCcsCiAgICAgICAg
ICAgICAnd3RmL3VuaWNvZGUvQ29sbGF0b3JEZWZhdWx0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAKaW5kZXggYzM3ZWFmMGM1N2I4ZjhlMjI5NDZhOTdmMDczYzkzMWNlODgx
N2EzZS4uNTZmN2RmNjBjYjExMGQwYjE5NjhhNGQxM2ZkNGQ2ZDI5OWVlMzBiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtNDMzLDYgKzQzMyw3IEBAIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAg
IFN0cmluZ0ltcGwqIHJlc3VsdCA9ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAg
ICBpZiAocmVzdWx0ID09IHIpCiAgICAgICAgIHItPnNldElzQXRvbWljKHRydWUpOworICAgIEFT
U0VSVCghci0+aXNTdGF0aWMoKSB8fCByZXN1bHQtPmlzU3RhdGljKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMzMzYTU1YWU5NWVkZTc0
MDEzZmVjMzhjYjZjNzBjODI0NWMxNzBmMC4uMGFiNDQzNDJjY2RjMTAzYTAxYmExZDM3NjE2MTFj
OWY5OGUzOTkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTUyMCwxMyArNTIwLDE0
IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5k
RmxhZ3MgJiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KICAgICB2b2lkIHNldElzQXRvbWljKGJvb2wg
aXNJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKICAgICAg
ICAgaWYgKGlzSWRlbnRpZmllcikKICAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFz
aEZsYWdJc0F0b21pYzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3Mg
Jj0gfnNfaGFzaEZsYWdJc0F0b21pYzsKICAgICB9CiAKKyAgICBib29sIGlzU3RhdGljKCkgY29u
c3QgeyByZXR1cm4gbV9yZWZDb3VudCAmIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7IH0K
KwogI2lmZGVmIFNUUklOR19TVEFUUwogICAgIGJvb2wgaXNTdWJTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiAgYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nOyB9CiAjZW5kaWYKQEAg
LTc0Niw3ICs3NDcsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Nv
cHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1ZmZlck93
bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hpcD4obV9o
YXNoQW5kRmxhZ3MgJiBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwKTsgfQotICAgIGJvb2wgaXNT
dGF0aWMoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50ICYgc19yZWZDb3VudEZsYWdJc1N0YXRp
Y1N0cmluZzsgfQogICAgIHRlbXBsYXRlIDxjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFy
UHJlZGljYXRlKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgTkVWRVJfSU5MSU5FIGNvbnN0
IFVDaGFyKiBnZXREYXRhMTZTbG93Q2FzZSgpIGNvbnN0OwpAQCAtNzc5LDEyICs3NzksMTEgQEAg
cHVibGljOgogICAgICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwogICAgICAgICB1bnNpZ25lZCBt
X2xlbmd0aDsKICAgICAgICAgY29uc3QgTENoYXIqIG1fZGF0YTg7Ci0gICAgICAgIHZvaWQqIG1f
YnVmZmVyOworICAgICAgICBjb25zdCBVQ2hhciogbV9jb3B5RGF0YTE2OwogICAgICAgICB1bnNp
Z25lZCBtX2hhc2hBbmRGbGFnczsKIAotICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgbWltaWMgQ29u
c3RydWN0RnJvbUxpdGVyYWwuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRp
YWxSZWZDb3VudCA9IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50
ZXJuYWwgfCBzX2hhc2hGbGFnSGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyOworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsUmVmQ291bnQgPSBzX3JlZkNvdW50RmxhZ0lz
U3RhdGljU3RyaW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsRmxh
Z3MgPSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdIYXMxNkJpdFNoYWRvdyB8IEJ1
ZmZlckludGVybmFsIHwgc19oYXNoRmxhZ0hhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcjsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaFNoaWZ0ID0gc19mbGFnQ291bnQ7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5kZXggMmUxYjk1NWFj
ZDE0ZWQyMzEyZmViMjYzZjY2MmRiZDVjMTBlNDkxMC4uYjRjMWM4M2RlOGYzOWU0YWJlZmM0N2Nh
NzY5YzRmOGZmYTNlMjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCkBA
IC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0
cmluZ1N0YXRpY3MuaCIKIAogI2lmZGVmIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19PTl9HQ0MK
ICNkZWZpbmUgQVRPTUlDU1RSSU5HX0hJREVfR0xPQkFMUyAxCkBAIC03MywyMiArNzQsMzIgQEAg
TkVWRVJfSU5MSU5FIHVuc2lnbmVkIFN0cmluZ0ltcGw6Omhhc2hTbG93Q2FzZSgpIGNvbnN0CiB2
b2lkIEF0b21pY1N0cmluZzo6aW5pdCgpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7
Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBu
b3QgdGhyZWFkIHNhZmUsIHNvIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQgZmlyc3QuCi0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OwogCi0gICAgICAgIC8vIFVzZSBwbGFjZW1lbnQgbmV3IHRvIGluaXRpYWxpemUgdGhlIGdsb2Jh
bHMuCi0gICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZudWxsQXRvbSkgQXRvbWljU3RyaW5n
OwotICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmZW1wdHlBdG9tKSBBdG9taWNTdHJpbmco
IiIpOwotICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmdGV4dEF0b20pIEF0b21pY1N0cmlu
ZygiI3RleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAg
bmV3IChOb3ROdWxsLCAodm9pZCopJmNvbW1lbnRBdG9tKSBBdG9taWNTdHJpbmcoIiNjb21tZW50
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIG5ldyAoTm90
TnVsbCwgKHZvaWQqKSZzdGFyQXRvbSkgQXRvbWljU3RyaW5nKCIqIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4bWxB
dG9tKSBBdG9taWNTdHJpbmcoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmeG1sbnNBdG9tKSBBdG9taWNTdHJp
bmcoInhtbG5zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAg
IG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4bGlua0F0b20pIEF0b21pY1N0cmluZygieGxpbmsiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICB9CisgICAgbmV3IChO
b3ROdWxsLCAodm9pZCopJm51bGxBdG9tKSBBdG9taWNTdHJpbmc7CisgICAgbmV3IChOb3ROdWxs
LCAodm9pZCopJmVtcHR5QXRvbSkgQXRvbWljU3RyaW5nKCIiKTsKK30KKwordm9pZCBTdHJpbmdT
dGF0aWNzOjppbml0KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKKyAgICBpZiAo
aW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gRklYTUU6IFRoZXNlIHNob3Vs
ZCBiZSBhbGxvY2F0ZWQgYXQgY29tcGlsZSB0aW1lLgorICAgIG5ldyAoTm90TnVsbCwgKHZvaWQq
KSZ0ZXh0QXRvbSkgQXRvbWljU3RyaW5nKCIjdGV4dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZjb21tZW50QXRvbSkgQXRv
bWljU3RyaW5nKCIjY29tbWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZzdGFyQXRvbSkgQXRvbWljU3RyaW5nKCIqIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgbmV3IChOb3ROdWxsLCAo
dm9pZCopJnhtbEF0b20pIEF0b21pY1N0cmluZygieG1sIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnhtbG5zQXRvbSkgQXRv
bWljU3RyaW5nKCJ4bWxucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4bGlua0F0b20pIEF0b21pY1N0cmluZygieGxpbmsi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1N0YXRpY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzRlNjUyYjBjMTU2NWFhNGMxN2QwODcy
Njk2YWIyM2I3MDhlM2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdTdGF0aWNzLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU3RyaW5nU3RhdGljc19oCisjZGVmaW5l
IFN0cmluZ1N0YXRpY3NfaAorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3RyaW5nU3RhdGlj
cyB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgaW5pdCgpOworfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5n
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0KaW5k
ZXggYTEwZTNjODJmNmFhN2VmNmU4NmY1NWE1NjIwZDQxMjViNTVjNjZkOC4uN2ZjMmFkMmY5YzRk
ODRjYTM0ZWMwZDI5ZDA2YzNjODJjM2QxZTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0KQEAgLTM0LDYgKzM0LDEzIEBAIHN1YiBHZW5l
cmF0ZVN0cmluZ3MoJCkKICAgICBteSBAcmVzdWx0ID0gKCk7CiAKICAgICB3aGlsZSAoIG15ICgk
bmFtZSwgJHZhbHVlKSA9IGVhY2ggJXN0cmluZ3MgKSB7CisgICAgICAgIG15ICRjaGFyYWN0ZXJM
aXN0ID0gam9pbigiJywgJyIsIHNwbGl0KCIiLCAkdmFsdWUpKTsKKyAgICAgICAgcHVzaChAcmVz
dWx0LCAic3RhdGljIGNvbnN0IFVDaGFyICR7bmFtZX1TdHJpbmcxNltdID0geyAnJGNoYXJhY3Rl
ckxpc3QnLCAwIH07XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEByZXN1bHQsICJcbiIpOworCisg
ICAgd2hpbGUgKCBteSAoJG5hbWUsICR2YWx1ZSkgPSBlYWNoICVzdHJpbmdzICkgewogICAgICAg
ICBwdXNoKEByZXN1bHQsICJzdGF0aWMgY29uc3QgTENoYXIgJHtuYW1lfVN0cmluZzhbXSA9IFwi
JHt2YWx1ZX1cIjtcbiIpOwogICAgIH0KIApAQCAtNDcsNyArNTQsNyBAQCBzdGF0aWMgU3RyaW5n
SW1wbDo6U3RhdGljQVNDSUlMaXRlcmFsICR7bmFtZX1EYXRhID0gewogICAgIFN0cmluZ0ltcGw6
OlN0YXRpY0FTQ0lJTGl0ZXJhbDo6c19pbml0aWFsUmVmQ291bnQsCiAgICAgJGxlbmd0aCwKICAg
ICAke25hbWV9U3RyaW5nOCwKLSAgICAwLAorICAgICR7bmFtZX1TdHJpbmcxNiwKICAgICBTdHJp
bmdJbXBsOjpTdGF0aWNBU0NJSUxpdGVyYWw6OnNfaW5pdGlhbEZsYWdzIHwgKCR7aGFzaH0gPDwg
U3RyaW5nSW1wbDo6U3RhdGljQVNDSUlMaXRlcmFsOjpzX2hhc2hTaGlmdCkKIH07CiBFTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggODg1OWRjMDUxYWM3YzIzN2U4YzRmYWUwZjhkMzc1NTc3MWI5
NGQ2ZC4uMzllZmQxM2RkMjczMTlhOWNiMjc0YTc2OTY1YjhjOGQzMjExNTMxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTk1LDYgKzk1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nU3RhdGljcy5oPgogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29t
cG9zaXRvci5oIgpAQCAtMTQ5LDYgKzE1MCwyMSBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVu
dFRleHRab29tRmFjdG9yKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcGFyZW50LT50ZXh0Wm9v
bUZhY3RvcigpOwogfQogCit2b2lkIGluaXQoKQoreworICAgIEF0b21pY1N0cmluZzo6aW5pdCgp
OworICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKKyAgICBIVE1MTmFtZXM6OmluaXQoKTsKKyAg
ICBTVkdOYW1lczo6aW5pdCgpOworICAgIFhMaW5rTmFtZXM6OmluaXQoKTsKKyAgICBNYXRoTUxO
YW1lczo6aW5pdCgpOworICAgIFhNTE5TTmFtZXM6OmluaXQoKTsKKyAgICBYTUxOYW1lczo6aW5p
dCgpOworICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lczo6aW5pdCgpOworICAgIE1lZGlhRmVhdHVy
ZU5hbWVzOjppbml0KCk7CisgICAgV1RGOjpTdHJpbmdTdGF0aWNzOjppbml0KCk7Cit9CisKIGlu
bGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxvYWRlckNsaWVudCkKICAgICA6IG1f
cGFnZShwYWdlKQogICAgICwgbV90cmVlTm9kZSh0aGlzLCBwYXJlbnRGcm9tT3duZXJFbGVtZW50
KG93bmVyRWxlbWVudCkpCkBAIC0xNjksMTYgKzE4NSw3IEBAIGlubGluZSBGcmFtZTo6RnJhbWUo
UGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9h
ZGVyCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQo
MCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAgQXRvbWljU3RyaW5nOjppbml0KCk7Ci0gICAg
SFRNTE5hbWVzOjppbml0KCk7Ci0gICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOwotICAgIE1lZGlh
RmVhdHVyZU5hbWVzOjppbml0KCk7Ci0gICAgU1ZHTmFtZXM6OmluaXQoKTsKLSAgICBYTGlua05h
bWVzOjppbml0KCk7Ci0gICAgTWF0aE1MTmFtZXM6OmluaXQoKTsKLSAgICBYTUxOU05hbWVzOjpp
bml0KCk7Ci0gICAgWE1MTmFtZXM6OmluaXQoKTsKLSAgICBXZWJLaXRGb250RmFtaWx5TmFtZXM6
OmluaXQoKTsKKyAgICBXZWJDb3JlOjppbml0KCk7CiAKICAgICBpZiAoIW93bmVyRWxlbWVudCkg
ewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDNkOTA5
YjU5NWJjOTQ5NTQ5NzI0ZGNmMWUwZTA1OTE1YWZmNTQ5ZGIuLmIyMzQ5YWIxNGRkMmFmZDYxYTFl
YTVjODcyNGJjYzk5ZTNiYTg4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTg1LDYgKzg1LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllclRy
ZWVGbGFnczsKIAorICAgIHZvaWQgaW5pdCgpOworCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMg
UmVmQ291bnRlZDxGcmFtZT4sIHB1YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggZTI2ZmI4ZWY5ZDVlYjY2MmQ2NjQ4MDI3ODU3ZGE3
ZGIxN2IwNGJkMy4uODMxODI5ZTJkNWQ4ZGExNGVjYmI4NDQ5ZmIxMGM0MGFhZDJiMWU2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAKICNpbmNsdWRlICJFdmVudFRyYWNlci5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAjaW5jbHVkZSAiTGF5b3V0
VGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNDIsMTEgKzE0MywxMSBA
QCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoUGxhdGZvcm0qIHdlYktpdFBsYXRmb3JtU3VwcG9y
dCkKICAgICBBU1NFUlQoIXNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0KTsKICAgICBzX3dlYktpdFBs
YXRmb3JtU3VwcG9ydCA9IHdlYktpdFBsYXRmb3JtU3VwcG9ydDsKICAgICBQbGF0Zm9ybTo6aW5p
dGlhbGl6ZShzX3dlYktpdFBsYXRmb3JtU3VwcG9ydCk7Ci0gICAgV2ViQ29yZTo6SW1hZ2VEZWNv
ZGluZ1N0b3JlOjppbml0aWFsaXplT25jZSgpOwogCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgIFdURjo6QXRvbWlj
U3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdCgpOworICAgIFdlYkNvcmU6OkltYWdl
RGVjb2RpbmdTdG9yZTo6aW5pdGlhbGl6ZU9uY2UoKTsKIAogICAgIC8vIFRoZXJlIGFyZSBzb21l
IGNvZGUgcGF0aHMgKGZvciBleGFtcGxlLCBydW5uaW5nIFdlYktpdCBpbiB0aGUgYnJvd3Nlcgog
ICAgIC8vIHByb2Nlc3MgYW5kIGNhbGxpbmcgaW50byBMb2NhbFN0b3JhZ2UgYmVmb3JlIGFueXRo
aW5nIGVsc2UpIHdoZXJlIHRoZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>