<?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>157465</bug_id>
          
          <creation_ts>2016-05-08 13:25:43 -0700</creation_ts>
          <short_desc>[Bindings] Simplify [RequiresExistingAtomicString] IDL extended attribute handling</short_desc>
          <delta_ts>2016-05-08 14:56:19 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1191084</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-08 13:25:43 -0700</bug_when>
    <thetext>Simplify [RequiresExistingAtomicString] IDL extended attribute handling in the bindings generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191086</commentid>
    <comment_count>1</comment_count>
      <attachid>278370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-08 13:39:37 -0700</bug_when>
    <thetext>Created attachment 278370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191088</commentid>
    <comment_count>2</comment_count>
      <attachid>278370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 13:46:49 -0700</bug_when>
    <thetext>Comment on attachment 278370
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4382
&gt; +        return (&quot;AtomicString($value.toString(state)-&gt;toExistingAtomicString(state))&quot;, 1) if $signature-&gt;extendedAttributes-&gt;{&quot;RequiresExistingAtomicString&quot;};

The parentheses here after &quot;return&quot; are not normal perl coding style. I like it better without.

It’s irritating that we have to construct AtomicString rather than just passing the result of toExistingAtomicString. Does it compile without the explicit AtomicString?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191089</commentid>
    <comment_count>3</comment_count>
      <attachid>278370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-08 13:51:53 -0700</bug_when>
    <thetext>Comment on attachment 278370
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4382
&gt;&gt; +        return (&quot;AtomicString($value.toString(state)-&gt;toExistingAtomicString(state))&quot;, 1) if $signature-&gt;extendedAttributes-&gt;{&quot;RequiresExistingAtomicString&quot;};
&gt; 
&gt; The parentheses here after &quot;return&quot; are not normal perl coding style. I like it better without.
&gt; 
&gt; It’s irritating that we have to construct AtomicString rather than just passing the result of toExistingAtomicString. Does it compile without the explicit AtomicString?

1. We use these parentheses in all return statements in this function. Do you want be to drop them all?
I am not Perl expert but I personally like the parentheses here as it makes it clear we&apos;re returning a tuple.

2. Yes, I have tried without the AtomicString() but it did not build. The compiler complains about it being ambiguous because there are 2 overloads in TreeScope.h:
    Element* getElementById(const AtomicString&amp;) const;
    WEBCORE_EXPORT Element* getElementById(const String&amp;) const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191096</commentid>
    <comment_count>4</comment_count>
      <attachid>278370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 14:39:25 -0700</bug_when>
    <thetext>Comment on attachment 278370
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4382
&gt;&gt;&gt; +        return (&quot;AtomicString($value.toString(state)-&gt;toExistingAtomicString(state))&quot;, 1) if $signature-&gt;extendedAttributes-&gt;{&quot;RequiresExistingAtomicString&quot;};
&gt;&gt; 
&gt;&gt; The parentheses here after &quot;return&quot; are not normal perl coding style. I like it better without.
&gt;&gt; 
&gt;&gt; It’s irritating that we have to construct AtomicString rather than just passing the result of toExistingAtomicString. Does it compile without the explicit AtomicString?
&gt; 
&gt; 1. We use these parentheses in all return statements in this function. Do you want be to drop them all?
&gt; I am not Perl expert but I personally like the parentheses here as it makes it clear we&apos;re returning a tuple.
&gt; 
&gt; 2. Yes, I have tried without the AtomicString() but it did not build. The compiler complains about it being ambiguous because there are 2 overloads in TreeScope.h:
&gt;     Element* getElementById(const AtomicString&amp;) const;
&gt;     WEBCORE_EXPORT Element* getElementById(const String&amp;) const;

Oops, need the parentheses. Forgot this was a tuple!

I really don’t get why toExistingAtomicString returns RefPtr&lt;AtomicStringImpl&gt; instead of AtomicString, but this code is all right with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191099</commentid>
    <comment_count>5</comment_count>
      <attachid>278370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-08 14:56:14 -0700</bug_when>
    <thetext>Comment on attachment 278370
Patch

Clearing flags on attachment: 278370

Committed r200562: &lt;http://trac.webkit.org/changeset/200562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191100</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-08 14:56:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278370</attachid>
            <date>2016-05-08 13:39:37 -0700</date>
            <delta_ts>2016-05-08 14:56:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157465-20160508134022.patch</filename>
            <type>text/plain</type>
            <size>16832</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYyODMwZTczNjcxMWI4NDkyOTI5MGIy
NWQ4NDRlYWE4NzdmYTU5MjMuLjc5MmEyYzk2ZWE5ODk0MmU5NGVhNzdiMTQ4NTUwNDQ3MjdlZGUx
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDUtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQmluZGluZ3NdIFNpbXBsaWZ5IFtSZXF1aXJlc0V4aXN0
aW5nQXRvbWljU3RyaW5nXSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc0NjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gQXRvbWljU3Ry
aW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmKSBjb25zdHJ1Y3RvciB0aGF0IGlzIG5vdwor
ICAgICAgICB1c2VkIGJ5IHRoZSBiaW5kaW5ncyB3aGVuIFtSZXF1aXJlc0V4aXN0aW5nQXRvbWlj
U3RyaW5nXSBpcyB1c2VkLiBUaGlzCisgICAgICAgIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdXNp
bmcgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqKSBhcyB0aGUKKyAgICAgICAgY2FsbGVy
IGhhcyBhIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhbmQgaXMgY29uc2lzdGVudCB3aXRoIHRo
ZQorICAgICAgICBwcmUtZXhpc3RpbmcgU3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYm
KSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAg
ICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisKIDIwMTYtMDUtMDggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgICogd3RmL3RleHQvV1RGU3Ry
aW5nLmg6IFJlbW92ZSBwcmFnbWEgb25jZS4gTm90IHdvcmtpbmcgZm9yIHNvbWUgcmVhc29uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDc4MzJlZTczN2FlODMxMDQ2ZTA1OTAyNDVlYmM4NjY0ODVhMzE4MjcuLjJi
ZGM1ZDk2MGVkZjZkNmU4ZDI0MGYzMzZhZGU2ZDRjODQ4NDQ4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNi0wNS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFtCaW5kaW5nc10gU2ltcGxpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJp
bmddIElETCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRv
bWljU3RyaW5nXSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsaW5nCisgICAgICAgIGluIHRo
ZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAg
ICAgRHJvcCBjb2RlIHNwZWNpZmljIHRvIFtSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nXS4K
KworICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgRGVhbCB3aXRoIFtSZXF1aXJl
c0V4aXN0aW5nQXRvbWljU3RyaW5nXSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlLAorICAgICAgICBz
aW1pbGFybHkgdG8gW0F0b21pY1N0cmluZ10gYW5kIFtUcmVhdE51bGxBc10uCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgIEFkZCBiaW5kaW5ncyB0ZXN0
IGNvdmVyYWdlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAq
IHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6
OmdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHRoZSBpZCBwYXJh
bWV0ZXIuIFRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgdXNlZCB0byBkbworICAgICAgICB0aGlzIG51
bGwgY2hlY2sgZm9yIHVzIGJ1dCBpdCBpcyBubyBsb25nZXIgdGhlIGNhc2UgKHRvIG1ha2UgdGhl
IGJpbmRpbmdzCisgICAgICAgIGdlbmVyYXRvciBhIGJpdCBzaW1wbGVyKS4gVGhpcyBleHRlbmRl
ZCBhdHRyaWJ1dGUgaXMgbm90IGNvbW1vbmx5IHVzZWQKKyAgICAgICAgYW5kIGlzIG1lYW50IGFz
IGEgbWljcm8tb3B0aW1pemF0aW9uIGZvciBnZXRFbGVtZW50QnlJZCgpLgorCiAyMDE2LTA1LTA4
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBvdXQ6
IFRocmVhZFNhbml0aXplcjogRGF0YSByYWNlIGFuZCB0aHJlYWQgbGVhayBpbiBXZWJDb3JlOjpT
Y3JvbGxpbmdUaHJlYWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaAppbmRleCBhYmJkYjQ1ZGVmMjk5ZjRhZGVmZmIwM2UzZDZlNGQ1OGFkNTA2Y2UyLi45
MzIyYTc4ZDQyMTA1MzgyYjUyODQwOGI1MDliMDU5Mjc0Y2FkNzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIEF0
b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKik7CisgICAgQXRvbWljU3RyaW5nKFJlZlB0cjxB
dG9taWNTdHJpbmdJbXBsPiYmKTsKICAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNT
dHJpbmcoU3RyaW5nSW1wbCopOwogICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0
cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICBBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogYmFzZVN0
cmluZywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCk7CkBAIC0yNTksNiArMjYwLDEx
IEBAIGlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBp
bXApCiB7CiB9CiAKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4mJiBpbXApCisgICAgOiBtX3N0cmluZyhXVEZNb3ZlKGltcCkpCit7Cit9
CisKIGlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhTdHJpbmdJbXBsKiBpbXApCiAg
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoaW1wKSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZWQ5
M2I3ZTc4MWI5NDUxNjJiYzU1YzFhZTg1YjNkOTk2NGY2ZjdjNi4uOGUzYzc4ZDU4NGQ0YTE5ZmU5
NGYzNmExNDk4OTk2ODU3MzE3MDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM3NDgsNTUgKzM3NDgsNDYgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJl
cXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmcifSkgewotICAgICAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgY291bGQgYmUgbWFkZSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCBpZiB3ZSBhZGRlZCBh
biBBdG9taWNTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYpIGNvbnN0cnVjdG9yIGFu
ZCByZW1vdmVkIHRoZSBjYWxsIHRvIGdldCgpIGhlcmUuCi0gICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIEF0b21pY1N0cmluZyAkbmFtZSA9IHN0YXRlLT5hcmd1bWVudCgk
YXJndW1lbnRJbmRleCkudG9TdHJpbmcoc3RhdGUpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKHN0
YXRlKS5nZXQoKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoJG5hbWUuaXNOdWxsKCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG15ICRvdXRlcjsKLSAgICAg
ICAgICAgICAgICBteSAkaW5uZXI7Ci0gICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyKTsKLQotICAg
ICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmIGRlZmluZWQoJHBhcmFt
ZXRlci0+ZGVmYXVsdCkgJiYgIVdpbGxDb252ZXJ0VW5kZWZpbmVkVG9EZWZhdWx0UGFyYW1ldGVy
VmFsdWUoJHR5cGUsICRwYXJhbWV0ZXItPmRlZmF1bHQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG15ICRkZWZhdWx0VmFsdWUgPSAkcGFyYW1ldGVyLT5kZWZhdWx0OwotCi0gICAgICAgICAgICAg
ICAgICAgICMgU3RyaW5nLXJlbGF0ZWQgb3B0aW1pemF0aW9ucy4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
eSAkdXNlQXRvbWljU3RyaW5nID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkF0
b21pY1N0cmluZyJ9OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWZhdWx0VmFsdWUg
ZXEgIm51bGwiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9
ICR1c2VBdG9taWNTdHJpbmcgPyAibnVsbEF0b20iIDogIlN0cmluZygpIjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRkZWZhdWx0VmFsdWUgZXEgIlwiXCIiKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICR1c2VBdG9taWNTdHJpbmcgPyAi
ZW1wdHlBdG9tIiA6ICJlbXB0eVN0cmluZygpIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICR1c2VB
dG9taWNTdHJpbmcgPyAiQXRvbWljU3RyaW5nKCRkZWZhdWx0VmFsdWUsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6ICJBU0NJSUxpdGVyYWwoJGRlZmF1bHRWYWx1ZSkiOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgbXkgJG91dGVyOworICAgICAg
ICAgICAgbXkgJGlubmVyOworICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVU
eXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyKTsKKworICAgICAgICAgICAg
aWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYgZGVmaW5lZCgkcGFyYW1ldGVyLT5kZWZhdWx0
KSAmJiAhV2lsbENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZSgkdHlwZSwg
JHBhcmFtZXRlci0+ZGVmYXVsdCkpIHsKKyAgICAgICAgICAgICAgICBteSAkZGVmYXVsdFZhbHVl
ID0gJHBhcmFtZXRlci0+ZGVmYXVsdDsKKworICAgICAgICAgICAgICAgICMgU3RyaW5nLXJlbGF0
ZWQgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgICAgICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmlu
ZyIpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHVzZUF0b21pY1N0cmluZyA9ICRwYXJhbWV0
ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBdG9taWNTdHJpbmcifTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAkZGVmYXVsdFZhbHVlID0gJHVzZUF0b21pY1N0cmluZyA/ICJudWxsQXRvbSIgOiAiU3Ry
aW5nKCkiOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkZGVmYXVsdFZhbHVlIGVxICJc
IlwiIikgeworICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICR1c2VBdG9t
aWNTdHJpbmcgPyAiZW1wdHlBdG9tIiA6ICJlbXB0eVN0cmluZygpIjsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSAi
bnVsbHB0ciIgaWYgJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAkZGVmYXVsdFZhbHVlID0gIlBOYU4iIGlmICRkZWZhdWx0VmFsdWUgZXEgIk5hTiI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gIiRuYXRpdmVUeXBlKCkiIGlm
ICRkZWZhdWx0VmFsdWUgZXEgIltdIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0
VmFsdWUgPSAiSlNWYWx1ZTo6SlNVbmRlZmluZWQiIGlmICRkZWZhdWx0VmFsdWUgZXEgInVuZGVm
aW5lZCI7CisgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gJHVzZUF0b21p
Y1N0cmluZyA/ICJBdG9taWNTdHJpbmcoJGRlZmF1bHRWYWx1ZSwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkiIDogIkFTQ0lJTGl0ZXJhbCgkZGVmYXVsdFZhbHVlKSI7CiAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAic3RhdGUt
PmFyZ3VtZW50KCRhcmd1bWVudEluZGV4KS5pc1VuZGVmaW5lZCgpID8gJGRlZmF1bHRWYWx1ZSA6
ICI7Ci0gICAgICAgICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoJGFyZ3VtZW50SW5kZXgpIjsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVy
LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICMgVXNlIFdURjo6T3B0aW9uYWw8PigpIGZvciBvcHRpb25hbCBwYXJhbWV0
ZXJzIHRoYXQgYXJlIG1pc3Npbmcgb3IgdW5kZWZpbmVkIGFuZCB0aGF0IGRvIG5vdCBoYXZlIGEg
ZGVmYXVsdCB2YWx1ZSBpbiB0aGUgSURMLgotICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAi
c3RhdGUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
JG5hdGl2ZVR5cGU+KCkgOiAiOwotICAgICAgICAgICAgICAgICAgICAkaW5uZXIgPSAic3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KSI7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJG91dGVyID0gIiI7Ci0gICAgICAgICAgICAgICAg
ICAgICRpbm5lciA9ICJzdGF0ZS0+YXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpIjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhj
ZXB0aW9uKSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyLCAkaW5uZXIs
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwi
fSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUg
PSAke291dGVyfSR7bmF0aXZlVmFsdWV9O1xuIik7Ci0gICAgICAgICAgICAgICAgJHZhbHVlID0g
IldURk1vdmUoJG5hbWUpIjsKLSAgICAgICAgICAgICAgICBpZiAoJG1heVRocm93RXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICJudWxs
cHRyIiBpZiAkZGVmYXVsdFZhbHVlIGVxICJudWxsIjsKKyAgICAgICAgICAgICAgICAgICAgJGRl
ZmF1bHRWYWx1ZSA9ICJQTmFOIiBpZiAkZGVmYXVsdFZhbHVlIGVxICJOYU4iOworICAgICAgICAg
ICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gIiRuYXRpdmVUeXBlKCkiIGlmICRkZWZhdWx0VmFs
dWUgZXEgIltdIjsKKyAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICJKU1ZhbHVl
OjpKU1VuZGVmaW5lZCIgaWYgJGRlZmF1bHRWYWx1ZSBlcSAidW5kZWZpbmVkIjsKICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPmFyZ3VtZW50KCRh
cmd1bWVudEluZGV4KS5pc1VuZGVmaW5lZCgpID8gJGRlZmF1bHRWYWx1ZSA6ICI7CisgICAgICAg
ICAgICAgICAgJGlubmVyID0gInN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRl
eCkiOworICAgICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAhZGVm
aW5lZCgkcGFyYW1ldGVyLT5kZWZhdWx0KSkgeworICAgICAgICAgICAgICAgICMgVXNlIFdURjo6
T3B0aW9uYWw8PigpIGZvciBvcHRpb25hbCBwYXJhbWV0ZXJzIHRoYXQgYXJlIG1pc3Npbmcgb3Ig
dW5kZWZpbmVkIGFuZCB0aGF0IGRvIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgSURM
LgorICAgICAgICAgICAgICAgICRvdXRlciA9ICJzdGF0ZS0+YXJndW1lbnQoJGFyZ3VtZW50SW5k
ZXgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDwkbmF0aXZlVHlwZT4oKSA6ICI7CisgICAgICAg
ICAgICAgICAgJGlubmVyID0gInN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRl
eCkiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkb3V0ZXIgPSAiIjsK
KyAgICAgICAgICAgICAgICAkaW5uZXIgPSAic3RhdGUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4
KSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXIsICRp
bm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRp
b25hbCJ9KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1l
ID0gJHtvdXRlcn0ke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgJHZhbHVlID0gIldU
Rk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgIGlmICgkbWF5VGhyb3dFeGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJh
dG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4g
L0xpc3QkLzsKQEAgLTQzODgsNiArNDM3OSw4IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICB9
CiAKICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgcmV0dXJuICgiQXRv
bWljU3RyaW5nKCR2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmco
c3RhdGUpKSIsIDEpIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXF1aXJl
c0V4aXN0aW5nQXRvbWljU3RyaW5nIn07CisKICAgICAgICAgaWYgKCRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJUcmVhdE51bGxBcyJ9KSB7CiAgICAgICAgICAgICByZXR1cm4gKCJ2
YWx1ZVRvU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgJHZhbHVlKSIsIDEp
IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdE51bGxBcyJ9IGVxICJF
bXB0eVN0cmluZyI7CiAgICAgICAgICAgICByZXR1cm4gKCJ2YWx1ZVRvU3RyaW5nV2l0aE51bGxD
aGVjayhzdGF0ZSwgJHZhbHVlKSIsIDEpIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJUcmVhdE51bGxBcyJ9IGVxICJMZWdhY3lOdWxsU3RyaW5nIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXgg
YmZjMTYyNTU4Y2Q5YWFiYzgxZDc1MzBiZjFkMTg2NTExZWM4Nzg2Zi4uYzMwOWFmZGE3NmM2MDk4
MWJhM2E4YmM2ODAxYzdjNjNhZjg3OGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpA
QCAtMzUsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpT
RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0ZldGNo
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgpAQCAtNjM1LDYgKzYzNyw3IEBAIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0
cmluZ0FycmF5RnVuY3Rpb24oCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlNDOjpFeGVjU3Rh
dGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMihKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNW
R0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDIoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTEyMTIsNiArMTIxNSw3IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KICAgICB7ICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9
LAogICAgIHsgIm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aEFuZFdpdGhv
dXROdWxsYWJsZVNlcXVlbmNlMiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKSwgKGludHB0cl90KSAoMikg
fSB9LAorICAgIHsgImdldEVsZW1lbnRCeUlkIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImdl
dFNWR0RvY3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNW
R0RvY3VtZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImNvbnZlcnQxIiwgSlNDOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKSwgKGludHB0cl90KSAoMSkg
fSB9LAogICAgIHsgImNvbnZlcnQyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQyKSwgKGludHB0cl90KSAoMSkgfSB9LApAQCAtNTYzNyw2ICs1NjQxLDIzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQW5kV2l0aG91dE51bGxhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJnZXRFbGVtZW50QnlJZCIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIGVsZW1lbnRJZCA9IEF0
b21pY1N0cmluZyhzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0V4aXN0aW5n
QXRvbWljU3RyaW5nKHN0YXRlKSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbAppbmRleCA4MWQxYTNhZmQyZGJiZjAwOWFmM2JkMjM0NjJkODQ4ODA4MmExOTFhLi45
MjFhMzE1NmYzMzAyYzEyZTI3NjU5NzQwNTVkNjY2ZGY2ODhjNGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0yOTAsNiArMjkw
LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKIAogICAg
IHZvaWQgbWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKHNlcXVlbmNlPHVuc2ln
bmVkIGxvbmc+IGFycmF5QXJnLCBzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPj8gbnVsbGFibGVBcnJh
eUFyZyk7CiAgICAgdm9pZCBtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKHVu
c2lnbmVkIGxvbmdbXSBhcnJheUFyZywgdW5zaWduZWQgbG9uZ1tdPyBudWxsYWJsZUFycmF5QXJn
KTsKKworICAgIEVsZW1lbnQ/IGdldEVsZW1lbnRCeUlkKFtSZXF1aXJlc0V4aXN0aW5nQXRvbWlj
U3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKICNlbmRpZgogCiAgICAgW0NoZWNrU2VjdXJp
dHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDMzMTgxZTA0NjlmYTUz
NjFkYTdjZWJiNWIyNmQ0MjYwZGUzZWU0NjAuLjA4NTQ4YTg0MzFhNzFkNWNlYzY2Yjg4MTJlMWY0
MmU5ODZlMDZiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAg
LTkzLDYgKzkzLDkgQEAgYm9vbCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZVhNTChjb25zdCBTdHJp
bmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFAKIAogRWxlbWVudCogRG9jdW1l
bnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QK
IHsKKyAgICBpZiAoaWQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAg
Ly8gRmFzdCBwYXRoIGZvciBTaGFkb3dSb290LCB3aGVyZSB3ZSBhcmUgYm90aCBhIERvY3VtZW50
RnJhZ21lbnQgYW5kIGEgVHJlZVNjb3BlLgogICAgIGlmIChpc1RyZWVTY29wZSgpKQogICAgICAg
ICByZXR1cm4gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCmluZGV4IDU1NDNlMzYxOTk2OTJhNGNhNDJkYTExMjVjNjExNTcxNDc5
YTdjZmQuLmEyOTNkYWRmZDk4NGU1ZTE0ZGM2MjQzYWE1ZjMzMTYxNzJmMTA0OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTY3Miw2ICs2NzIsOSBAQCB2b2lkIFNWR1NW
R0VsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKQogLy8gU2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL1NWRzExL3N0cnVjdC5odG1sI0ludGVyZmFjZVNWR1NWR0VsZW1lbnQKIEVs
ZW1lbnQqIFNWR1NWR0VsZW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpCiB7CisgICAgaWYgKGlkLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCk7CiAg
ICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNEZXNjZW5kYW50T2YodGhpcykpCiAgICAgICAg
IHJldHVybiBlbGVtZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>