<?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>156808</bug_id>
          
          <creation_ts>2016-04-20 14:05:57 -0700</creation_ts>
          <short_desc>WebScriptObject description swizzler should work in a multi-threaded world</short_desc>
          <delta_ts>2016-04-21 13:59:47 -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>New Bugs</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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1185531</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-20 14:05:57 -0700</bug_when>
    <thetext>WebScriptObject description swizzler should work in a multi-threaded world</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185543</commentid>
    <comment_count>1</comment_count>
      <attachid>276853</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-20 14:35:29 -0700</bug_when>
    <thetext>Created attachment 276853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185548</commentid>
    <comment_count>2</comment_count>
      <attachid>276853</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-20 14:44:52 -0700</bug_when>
    <thetext>Comment on attachment 276853
Patch

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

r=me

&gt; Source/WebCore/bridge/objc/objc_instance.mm:472
&gt; +    if (s_descriptionDepth &amp;&amp; s_descriptionDepth-&gt;isSet() &amp;&amp; **s_descriptionDepth)

s_descriptionDepth should never be null here. Let&apos;s not test for null.

&gt; Source/WebCore/bridge/objc/objc_instance.mm:488
&gt; +    IMP currentDescription = method_setImplementation(method, (IMP)swizzleNSObjectDescription);
&gt; +    if (currentDescription != (IMP)swizzleNSObjectDescription)
&gt; +        s_originalNSObjectDescription = currentDescription;

It seems like it would be better to move the swizzling into the call_once. That way, we swizzle once, but if the user program does its own swizzling, we won&apos;t break it or cause ABA problems.

&gt; Tools/TestWebKitAPI/Tests/mac/WebScriptObjectDescription.html:6
&gt; +            if (base + &quot;&quot; === &quot;&lt;NSOBject&gt;&quot;)

Should be NSObject, not NSOBject.

&gt; Tools/TestWebKitAPI/Tests/mac/WebScriptObjectDescription.html:9
&gt; +                return false;
&gt; +        }
&gt; +        return true;

These return values are backwards. The test only passes because the check is wrong too.

&gt; Tools/TestWebKitAPI/Tests/mac/WebScriptObjectDescription.mm:46
&gt; +            CRASH();

We don&apos;t want test failure to crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185553</commentid>
    <comment_count>3</comment_count>
      <attachid>276855</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-20 14:57:02 -0700</bug_when>
    <thetext>Created attachment 276855
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185558</commentid>
    <comment_count>4</comment_count>
      <attachid>276855</attachid>
    <who name="">mitz</who>
    <bug_when>2016-04-20 15:06:15 -0700</bug_when>
    <thetext>Comment on attachment 276855
Patch for landing

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

&gt; Source/WebCore/bridge/objc/objc_instance.mm:485
&gt; +        s_originalNSObjectDescription = method_setImplementation(method, (IMP)swizzleNSObjectDescription);

This is race-prone. The swizzled implementation could get called, and try to load from s_originalNSObjectDescription, before the store to that variable is done. I think you should use method_exchangeImplementations instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185593</commentid>
    <comment_count>5</comment_count>
      <attachid>276864</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-20 16:25:40 -0700</bug_when>
    <thetext>Created attachment 276864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185594</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-20 16:27:35 -0700</bug_when>
    <thetext>Attachment 276864 did not pass style-queue:


ERROR: Source/WebCore/bridge/objc/objc_instance.mm:475:  The parameter name &quot;s_descriptionDepth&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185597</commentid>
    <comment_count>7</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-20 16:28:46 -0700</bug_when>
    <thetext>&gt; ERROR: Source/WebCore/bridge/objc/objc_instance.mm:475:  The parameter name
&gt; &quot;s_descriptionDepth&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]

I don&apos;t even know what happened here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185599</commentid>
    <comment_count>8</comment_count>
      <attachid>276864</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-20 16:30:17 -0700</bug_when>
    <thetext>Comment on attachment 276864
Patch

Man this patch just gets better and better :P.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185608</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-20 16:43:00 -0700</bug_when>
    <thetext>Not sure if this is your patch or not:

Unexpected flakiness: text-only failures (1)
  fast/replaced/table-percent-height.html [ Failure Pass ]


Regressions: Unexpected text-only failures (4)
  css2.1/t0905-c5525-flthw-00-c-g.html [ Failure ]
  css2.1/t0905-c5526-flthw-00-c-g.html [ Failure ]
  fast/canvas/set-colors.html [ Failure ]
  fast/text/emoji.html [ Failure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185621</commentid>
    <comment_count>10</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-20 17:11:30 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Not sure if this is your patch or not:
&gt; 
&gt; Unexpected flakiness: text-only failures (1)
&gt;   fast/replaced/table-percent-height.html [ Failure Pass ]
&gt; 
&gt; 
&gt; Regressions: Unexpected text-only failures (4)
&gt;   css2.1/t0905-c5525-flthw-00-c-g.html [ Failure ]
&gt;   css2.1/t0905-c5526-flthw-00-c-g.html [ Failure ]
&gt;   fast/canvas/set-colors.html [ Failure ]
&gt;   fast/text/emoji.html [ Failure ]

Looks like it was just the ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185932</commentid>
    <comment_count>11</comment_count>
      <attachid>276864</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-21 13:59:42 -0700</bug_when>
    <thetext>Comment on attachment 276864
Patch

Clearing flags on attachment: 276864

Committed r199834: &lt;http://trac.webkit.org/changeset/199834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185933</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-21 13:59:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276853</attachid>
            <date>2016-04-20 14:35:29 -0700</date>
            <delta_ts>2016-04-20 14:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156808-20160420143550.patch</filename>
            <type>text/plain</type>
            <size>15787</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgyZGI4MTQ0MjhhYjI3
NmI5ODZiZWIyZDRlMDNkZDQwZWQ2YzFjZi4uMDFhYmYzNjY5OWYyN2E0OWM5MTA1NTI3NzYzY2Ew
MGQ5NTBiN2M4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA0LTIwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYlNjcmlwdE9i
amVjdCBkZXNjcmlwdGlvbiBzd2l6emxlciBzaG91bGQgd29yayBpbiBhIG11bHRpLXRocmVhZGVk
IHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTY4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IFdlYktpdCBsZWdhY3kgQVBJIHVzZXIgbWlnaHQgYmUgcnVubmluZyBPYmplY3RpdmUtQyBjb2Rl
IG9uIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNvcnJ1
cHQgb3RoZXIgdGhyZWFkJ3MgTlNPYmplY3QgZGVzY3JpcHRpb24gbWV0aG9kCisgICAgICAgIHdl
IHVzZSBUTFMgdG8gcmVjb3JkIGlmIHdlIGFyZSBpbiB0aGUgc3RyaW5nVmFsdWUgZnVuY3Rpb24u
IEFzIGFuIGF0dGVtcHQgdG8KKyAgICAgICAgcHJlc2VydmUgYW55IHVzZXIgc3dpenpsaW5nIHdl
IHVwZGF0ZSB0aGUgbm9uLXN0cmluZ1ZhbHVlIE5TT2JqZWN0IGRlc2NyaXB0aW9uCisgICAgICAg
IG1ldGhvZCBvbiBlYWNoIGNhbGwgdG8gc3RyaW5nVmFsdWUgaWYgaXQgaGFzIGNoYW5nZWQuIEFk
ZGl0aW9uYWxseSwgdGhlIFRMUworICAgICAgICBuZWVkcyB0byBiZSBhIGludCBiZWNhdXNlIHRo
ZSB1c2VyIG1pZ2h0IGNhbGwgaW50byBzdHJpbmdWYWx1ZSwgYmFjayBpbnRvIEpTLAorICAgICAg
ICB0aGVuIGJhY2sgaW50byBzdHJpbmdWYWx1ZS4gSWYgdGhlIFRMUyB3YXMgYSBib29sZWFuIHRo
ZW4gaXQgd291bGQgYmUgdW5zZXQKKyAgICAgICAgYXQgdGhhdCBwb2ludCBzbyB3aGVuIHdlIHJl
dHVybiBpbnRvIHRoZSBmaXJzdCBzdHJpbmdWYWx1ZSBjYWxsIHdlIHdvdWxkIGNhbGwKKyAgICAg
ICAgdGhlIG9yaWdpbmFsIE5TT2JqZWN0IGRlc2NyaXB0aW9uIG1ldGhvZCByYXRoZXIgdGhhbiBv
dXIgb3ZlcnJpZGUuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgcGVyZmVj
dAorICAgICAgICBpbiB0aGUgY2FzZSB3aGVyZSBhIHVzZXIgY2FsbHMgc3RyaW5nVmFsdWUgb25j
ZSwgc3dpenpsZXMgdGhlIE5TT2JqZWN0CisgICAgICAgIGRlc2NyaXB0aW9uIG1ldGhvZCwgY2Fs
bHMgc3RyaW5nVmFsdWUgYWdhaW4gYW5kIHVuc3dpenpsZXMuIEluIHRoaXMgY2FzZSwgdGhlCisg
ICAgICAgIHVzZXIgd2lsbCBzdGlsbCBjYWxsIHRoZSBuZXcgZGVzY3JpcHRpb24gbWV0aG9kLgor
CisKKworICAgICAgICBUZXN0IGFkZGVkIHRvIEFQSSB0ZXN0czogV2ViS2l0MS5XZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbgorCisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bToKKyAgICAgICAgKHN3aXp6bGVOU09iamVjdERlc2NyaXB0aW9uKToKKyAgICAgICAgKE9iamNJ
bnN0YW5jZTo6c3RyaW5nVmFsdWUpOgorCiAyMDE2LTA0LTE5ICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamNJbnN0YW5jZTo6c3RyaW5nVmFsdWUg
c2hvdWxkIG5vdCBjYWxsIE5TT2JqZWN0J3MgZGVzY3JpcHRpb24gbWV0aG9kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCA4ZWVjOWRmYTlhZWQ1ODk2
OGZjZjBkZmJmNDQ4MjM4ODgwNjAzYmNkLi5lNTdhNDkzYmUyMTVjY2FiNjg5Mzk4ZWY0ZTRkOGU0
ZWIxZDg1ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwOCwgMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDkgQEAKICNp
bXBvcnQgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRTcGVj
aWZpYy5oPgogCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIE9CSkNfTE9HKGZvcm1hdEFuZEFyZ3Mu
Li4pICgodm9pZCkwKQpAQCAtNDU5LDE3ICs0NjEsMzUgQEAgSlNDOjpKU1ZhbHVlIE9iamNJbnN0
YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZQogICAgIHJldHVybiB2YWx1ZU9mKGV4ZWMpOwogfQogCi1zdGF0aWMgTlNTdHJpbmcqIHN3aXp6
bGVOU09iamVjdERlc2NyaXB0aW9uKGlkIHNlbGYsIFNFTCkKKy8vIFRoZSBjb2RlIGJlbG93IGV4
aXN0cyBiZWNhdXNlIG9mIGFuIGlzc3VlIHdpdGggTlNPYmplY3QncyBkZXNjcmlwdGlvbiBtZXRo
b2QuCitzdGF0aWMgSU1QIHNfb3JpZ2luYWxOU09iamVjdERlc2NyaXB0aW9uID0gbnVsbHB0cjsK
K3N0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPHVpbnQzMl90Piogc19kZXNjcmlwdGlvbkRlcHRo
OworCit0eXBlZGVmIE5TU3RyaW5nICooKkRlc2NyaXB0aW9uRnVuY3Rpb25UeXBlKShpZCwgU0VM
KTsKKworc3RhdGljIE5TU3RyaW5nICpzd2l6emxlTlNPYmplY3REZXNjcmlwdGlvbihpZCBzZWxm
LCBTRUwgY21kKQogewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
JUAlQCIsIEAiPCIsIE5TU3RyaW5nRnJvbUNsYXNzKFtzZWxmIGNsYXNzXSksIEAiPiJdOworICAg
IGlmIChzX2Rlc2NyaXB0aW9uRGVwdGggJiYgc19kZXNjcmlwdGlvbkRlcHRoLT5pc1NldCgpICYm
ICoqc19kZXNjcmlwdGlvbkRlcHRoKQorICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8JUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3MoW3NlbGYgY2xhc3NdKV07CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGVzY3JpcHRpb25GdW5jdGlvblR5cGU+KHNfb3JpZ2lu
YWxOU09iamVjdERlc2NyaXB0aW9uKShzZWxmLCBjbWQpOwogfQogCiBKU0M6OkpTVmFsdWUgT2Jq
Y0luc3RhbmNlOjpzdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVEZXNjcmlwdGlvbkRlcHRoT25jZUZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZURlc2NyaXB0aW9uRGVwdGhPbmNlRmxhZywgW10g
eworICAgICAgICBzX2Rlc2NyaXB0aW9uRGVwdGggPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzx1
aW50MzJfdD4oKTsKKyAgICAgICAgKipzX2Rlc2NyaXB0aW9uRGVwdGggPSAwOworICAgIH0pOwor
CiAgICAgYXV0byBtZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChbTlNPYmplY3QgY2xh
c3NdLCBAc2VsZWN0b3IoZGVzY3JpcHRpb24pKTsKLSAgICBJTVAgb3JpZ2luYWxOU09iamVjdERl
c2NyaXB0aW9uID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZCwgKElNUClzd2l6emxl
TlNPYmplY3REZXNjcmlwdGlvbik7CisgICAgSU1QIGN1cnJlbnREZXNjcmlwdGlvbiA9IG1ldGhv
ZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2QsIChJTVApc3dpenpsZU5TT2JqZWN0RGVzY3JpcHRp
b24pOworICAgIGlmIChjdXJyZW50RGVzY3JpcHRpb24gIT0gKElNUClzd2l6emxlTlNPYmplY3RE
ZXNjcmlwdGlvbikKKyAgICAgICAgc19vcmlnaW5hbE5TT2JqZWN0RGVzY3JpcHRpb24gPSBjdXJy
ZW50RGVzY3JpcHRpb247CisKKyAgICAoKipzX2Rlc2NyaXB0aW9uRGVwdGgpKys7CiAgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKGV4ZWMsIFtnZXRPYmpl
Y3QoKSBkZXNjcmlwdGlvbl0pOwotICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2Qs
IG9yaWdpbmFsTlNPYmplY3REZXNjcmlwdGlvbik7CisgICAgKCoqc19kZXNjcmlwdGlvbkRlcHRo
KS0tOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MjljZWYxMWNiOWE0NGY4YTZlYzdkMzFjZGEyN2Yw
YmU4YmIwNTRlLi4xNzUwYmM2MzFiODNlZDhjNjAyMTdiYTYzZGM2NDRkYTgzNDBlZDk1IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTYtMDQtMjAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViU2NyaXB0T2JqZWN0IGRlc2NyaXB0aW9uIHN3aXp6bGVyIHNob3VsZCB3
b3JrIGluIGEgbXVsdGktdGhyZWFkZWQgd29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjgwOAorCisgICAgICAgIEFkZCBhIHRlc3QgZm9yIG91
ciBOU09iamVjdCBzd2l6emxpbmcgVExTIGltcGxlbWVudGF0aW9uLiBUaGUgdGVzdCBydW5zIG9u
CisgICAgICAgIHR3byB0aHJlYWRzLiBPbmUgaW4gSlMgYW5kIGFub3RoZXIgaW4gT2JqZWN0aXZl
LUMuIFdlIGV4cGVjdCB0aGUgSlMgdGhyZWFkCisgICAgICAgIHRvIHVzZSBvdXIgTlNPYmplY3Qg
ZGVzY3JpcHRpb24gb3ZlcnJpZGUgYW5kIHRoZSBPYmplY3RpdmUtQyB0aHJlYWQgdG8gYWN0Cisg
ICAgICAgIGFzIHRob3VnaCBpdCB3YXMgdXNpbmcgdGhlIG9yaWdpbmFsIE5TT2JqZWN0IGRlc2Ny
aXB0aW9uIG1ldGhvZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVj
dERlc2NyaXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKG5zT2Jq
ZWN0RGVzY3JpcHRpb25UZXN0KToKKyAgICAgICAgKC1bV2ViU2NyaXB0RGVzY3JpcHRpb25UZXN0
IHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMTYtMDQtMTkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgT2JqY0luc3RhbmNlOjpzdHJpbmdWYWx1ZSBzaG91bGQgbm90IGNh
bGwgTlNPYmplY3QncyBkZXNjcmlwdGlvbiBtZXRob2QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjQ3MTk4NWRkOGQ1NDBmNzcxZDM0MDA5NDZlZGFkMzlhZmRjZTRhNy4uMGRhNzQ3M2YwMTUw
NGM1NGZlMWJmM2I4OTI2YTUwZTYzMjEwNjYwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg4LDYgKzg4LDggQEAKIAkJNTJCOENGOTgxNTg2OEQ5MTAwMjgxMDUzIC8qIFNldERvY3VtZW50
VVJJLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJCOENGOTQxNTg2OENGMDAwMjgxMDUzIC8qIFNldERvY3VtZW50VVJJLmh0bWwgKi87
IH07CiAJCTUyRDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRl
V2l0aEZpbHRlcmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkQ2NzNFQzFBRkIxMjY4MDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0
ZVdpdGhGaWx0ZXJpbmcuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIxRUFCMDAzQjJCRDggLyog
UGFyZW50RnJhbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5k
bGUuY3BwICovOyB9OworCQk1MzY3NzAzNDFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3Jp
cHRpb24ubW0gKi87IH07CisJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1NzE0RUNCOTFDQThCNUIwMDAwNTFBQzgg
LyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCODFDQThCNTg4MDAwNTFBQzgg
LyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkIxQ0E4
QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNC
QTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1s
ICovOyB9OwogCQk1NzE0RUNCRDFDQThDMjJBMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcxNEVDQkMxQ0E4QzIxODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9y
aWdpbmFsVVJMMi5odG1sICovOyB9OwpAQCAtNDE1LDYgKzQxNyw3IEBACiAJCQlkc3RQYXRoID0g
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZp
bGVzID0gKAorCQkJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3RE
ZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3OTAxRkIxMUNBRjE0
MkQwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk1NzE0RUNCRDFDQThDMjJBMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcxNEVDQkIxQ0E4QkZF
NDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTY1OCw2ICs2NjEsOCBAQAogCQk1MkQ2NzNFQzFBRkIxMjY4MDBG
QTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhG
aWx0ZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0NTE0RDIx
RTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lX0J1bmRsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNjc3MDMzMUNDODAyMjgwMEQ0MjVCMSAv
KiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0
T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdlYlNj
cmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3MTRFQ0I4MUNBOEI1ODgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxV
UkwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQkExQ0E4QkZEMTAw
MDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQkMxQ0E4QzIxODAwMDUxQUM4IC8q
IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTAyLDYgKzE1MDcsNyBAQAogCQkJCTFBN0JGQzBBMTcxQTBCREIwMEJD
NUY2NCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tICovLAogCQkJCUE1RTIwMjcyMTVCMjE4MTkw
MEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSAqLywKIAkJCQk3NjQzMjJE
NTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLywK
KwkJCQk1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRp
b24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xNTM1LDYgKzE1NDEsNyBAQAogCQkJCUM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAv
KiB2ZXJib3NlTWFya3VwLmh0bWwgKi8sCiAJCQkJQ0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8q
IFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLmh0bWwgKi8sCiAJCQkJQTVFMjAy
NzAxNUIyMTgwNjAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWwgKi8s
CisJCQkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0
aW9uLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xODA0LDYgKzE4MTEsNyBAQAogCQkJCTdDQ0U3RUUxMUE0MTFBOUEw
MDQ0N0M0QyAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGOTFBNDExQUU2MDA0NDdDNEMgLyogR2V0SW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTM2NzcwMzQxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTIxQTQxMUE5QTAwNDQ3QzRDIC8qIEdl
dFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMzUxQTQxMUI4RTAwNDQ3QzRDIC8qIEhhc2hNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdGMzYxQTQxMUI4RTAwNDQ3QzRDIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xOTU1LDcgKzE5NjMsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDA3NjZERDIwMUE1QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJ
UmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzY2REQyMDFBNUFENTIwMDAyM0Uz
QkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5QTUz
QUYxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFCNDU0RUMxQjRFMjM2QjAwODVFQUE2IC8qIFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlzaExv
YWRGb3JGcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTAxRkFEMUNBRjEyQzIwMEVENjRG
OSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9u
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNj
cmlwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OTk2NGM1MzY2Njk0NDQwYmJhOTE4OTYxOGM3MjY2
YzZmMWZiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9XZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gZm9vKGJhc2UpIHsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICAgICAg
aWYgKGJhc2UgKyAiIiA9PT0gIjxOU09CamVjdD4iKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIDwvc2NyaXB0
PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2Vi
U2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9XZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDM4ZTk0NWY1NjVl
Njc5MmY4NGY2NTcyMzY5ZmRlMzgyMThjNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0KQEAgLTAs
MCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9y
dCA8YXRvbWljPgorI2ltcG9ydCA8dGhyZWFkPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CitAaW50ZXJmYWNlIFdlYlNjcmlwdERlc2NyaXB0aW9uVGVzdCA6IE5TT2JqZWN0IDxXZWJGcmFt
ZUxvYWREZWxlZ2F0ZT4KK0BlbmQKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZDsKKwordm9p
ZCBuc09iamVjdERlc2NyaXB0aW9uVGVzdChOU09iamVjdCAqb2JqZWN0KQoreworICAgIE5TRXJy
b3IgKmVycm9yID0gbnVsbHB0cjsKKyAgICBOU1JlZ3VsYXJFeHByZXNzaW9uICpyZWdleHAgPSBb
TlNSZWd1bGFyRXhwcmVzc2lvbiByZWd1bGFyRXhwcmVzc2lvbldpdGhQYXR0ZXJuOkAiPE5TT2Jq
ZWN0OiAweFswLTl8YS1mXSs+IiBvcHRpb25zOjAgZXJyb3I6JmVycm9yXTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcgKmRlc2Ny
aXB0aW9uID0gW29iamVjdCBkZXNjcmlwdGlvbl07CisgICAgICAgIGlmIChbcmVnZXhwIG51bWJl
ck9mTWF0Y2hlc0luU3RyaW5nOmRlc2NyaXB0aW9uIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5n
ZSgwLCBbZGVzY3JpcHRpb24gbGVuZ3RoXSldICE9IDEpCisgICAgICAgICAgICBDUkFTSCgpOwor
ICAgIH0KK30KKworQGltcGxlbWVudGF0aW9uIFdlYlNjcmlwdERlc2NyaXB0aW9uVGVzdAorCist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZyYW1lOihX
ZWJGcmFtZSAqKWZyYW1lCit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CitAZW5kCisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJLaXQxLCBXZWJTY3JpcHRPYmpl
Y3REZXNjcmlwdGlvbikKK3sKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0
TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAy
MDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxXZWJTY3Jp
cHREZXNjcmlwdGlvblRlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbV2ViU2NyaXB0RGVz
Y3JpcHRpb25UZXN0IG5ld10pOworICAgIE5TT2JqZWN0ICpvYmplY3QgPSBbW05TT2JqZWN0IGFs
bG9jXSBpbml0XTsKKworICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSB0ZXN0
Q29udHJvbGxlci5nZXQoKTsKKyAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0K
KyAgICAgICAgVVJMRm9yUmVzb3VyY2U6QCJXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbiIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dXTsKKworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgZGlkRmluaXNoTG9h
ZCA9IGZhbHNlOworCisgICAgc3RkOjp0aHJlYWQgdGhyZWFkMShuc09iamVjdERlc2NyaXB0aW9u
VGVzdCwgb2JqZWN0KTsKKworICAgIENGQm9vbGVhblJlZiByZXN1bHQgPSAoQ0ZCb29sZWFuUmVm
KShbW3dlYlZpZXcuZ2V0KCkgd2luZG93U2NyaXB0T2JqZWN0XSBjYWxsV2ViU2NyaXB0TWV0aG9k
OkAiZm9vIiB3aXRoQXJndW1lbnRzOkBbIG9iamVjdCBdXSk7CisgICAgRVhQRUNUX0VRKENGQm9v
bGVhbkdldFZhbHVlKHJlc3VsdCksIHRydWUpOworCisgICAgdGhyZWFkMS5qb2luKCk7CisgICAg
W29iamVjdCByZWxlYXNlXTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276855</attachid>
            <date>2016-04-20 14:57:02 -0700</date>
            <delta_ts>2016-04-20 16:25:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-156808-20160420145722.patch</filename>
            <type>text/plain</type>
            <size>15646</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgyZGI4MTQ0MjhhYjI3
NmI5ODZiZWIyZDRlMDNkZDQwZWQ2YzFjZi4uZWMzNmFiMTg5ZmExYTIyMTQ5NDYyZGU3MjgzZmJj
YWM4N2VlZTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTIwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYlNjcmlwdE9i
amVjdCBkZXNjcmlwdGlvbiBzd2l6emxlciBzaG91bGQgd29yayBpbiBhIG11bHRpLXRocmVhZGVk
IHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTY4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBB
IFdlYktpdCBsZWdhY3kgQVBJIHVzZXIgbWlnaHQgYmUgcnVubmluZyBPYmplY3RpdmUtQyBjb2Rl
IG9uIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNvcnJ1
cHQgb3RoZXIgdGhyZWFkJ3MgTlNPYmplY3QgZGVzY3JpcHRpb24gbWV0aG9kCisgICAgICAgIHdl
IHVzZSBUTFMgdG8gcmVjb3JkIGlmIHdlIGFyZSBpbiB0aGUgc3RyaW5nVmFsdWUgZnVuY3Rpb24u
IEFzIGFuIGF0dGVtcHQgdG8KKyAgICAgICAgcHJlc2VydmUgYW55IHVzZXIgc3dpenpsaW5nIHdl
IHVwZGF0ZSB0aGUgbm9uLXN0cmluZ1ZhbHVlIE5TT2JqZWN0IGRlc2NyaXB0aW9uCisgICAgICAg
IG1ldGhvZCBvbiBlYWNoIGNhbGwgdG8gc3RyaW5nVmFsdWUgaWYgaXQgaGFzIGNoYW5nZWQuIEFk
ZGl0aW9uYWxseSwgdGhlIFRMUworICAgICAgICBuZWVkcyB0byBiZSBhIGludCBiZWNhdXNlIHRo
ZSB1c2VyIG1pZ2h0IGNhbGwgaW50byBzdHJpbmdWYWx1ZSwgYmFjayBpbnRvIEpTLAorICAgICAg
ICB0aGVuIGJhY2sgaW50byBzdHJpbmdWYWx1ZS4gSWYgdGhlIFRMUyB3YXMgYSBib29sZWFuIHRo
ZW4gaXQgd291bGQgYmUgdW5zZXQKKyAgICAgICAgYXQgdGhhdCBwb2ludCBzbyB3aGVuIHdlIHJl
dHVybiBpbnRvIHRoZSBmaXJzdCBzdHJpbmdWYWx1ZSBjYWxsIHdlIHdvdWxkIGNhbGwKKyAgICAg
ICAgdGhlIG9yaWdpbmFsIE5TT2JqZWN0IGRlc2NyaXB0aW9uIG1ldGhvZCByYXRoZXIgdGhhbiBv
dXIgb3ZlcnJpZGUuCisKKyAgICAgICAgVGVzdCBhZGRlZCB0byBBUEkgdGVzdHM6IFdlYktpdDEu
V2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW06CisgICAgICAgIChzd2l6emxlTlNPYmplY3REZXNjcmlwdGlvbik6CisgICAg
ICAgIChPYmpjSW5zdGFuY2U6OnN0cmluZ1ZhbHVlKToKKwogMjAxNi0wNC0xOSAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmpjSW5zdGFuY2U6OnN0
cmluZ1ZhbHVlIHNob3VsZCBub3QgY2FsbCBOU09iamVjdCdzIGRlc2NyaXB0aW9uIG1ldGhvZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggOGVlYzlk
ZmE5YWVkNTg5NjhmY2YwZGZiZjQ0ODIzODg4MDYwM2JjZC4uMDJmOTg2MTY0OWI2NjA1MmRhNjQy
ODVkODBmYWU0ZTY0OWJmMmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICsz
Nyw5IEBACiAjaW1wb3J0IDxydW50aW1lL09iamVjdFByb3RvdHlwZS5oPgogI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYv
VGhyZWFkU3BlY2lmaWMuaD4KIAogI2lmZGVmIE5ERUJVRwogI2RlZmluZSBPQkpDX0xPRyhmb3Jt
YXRBbmRBcmdzLi4uKSAoKHZvaWQpMCkKQEAgLTQ1OSwxNyArNDYxLDMzIEBAIEpTQzo6SlNWYWx1
ZSBPYmpjSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUKICAgICByZXR1cm4gdmFsdWVPZihleGVjKTsKIH0KIAotc3RhdGljIE5TU3Ry
aW5nKiBzd2l6emxlTlNPYmplY3REZXNjcmlwdGlvbihpZCBzZWxmLCBTRUwpCisvLyBUaGUgY29k
ZSBiZWxvdyBleGlzdHMgYmVjYXVzZSBvZiBhbiBpc3N1ZSB3aXRoIE5TT2JqZWN0J3MgZGVzY3Jp
cHRpb24gbWV0aG9kLgorc3RhdGljIElNUCBzX29yaWdpbmFsTlNPYmplY3REZXNjcmlwdGlvbiA9
IG51bGxwdHI7CitzdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzx1aW50MzJfdD4qIHNfZGVzY3Jp
cHRpb25EZXB0aDsKKwordHlwZWRlZiBOU1N0cmluZyAqKCpEZXNjcmlwdGlvbkZ1bmN0aW9uVHlw
ZSkoaWQsIFNFTCk7CisKK3N0YXRpYyBOU1N0cmluZyAqc3dpenpsZU5TT2JqZWN0RGVzY3JpcHRp
b24oaWQgc2VsZiwgU0VMIGNtZCkKIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQCVAJUAiLCBAIjwiLCBOU1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pLCBA
Ij4iXTsKKyAgICBBU1NFUlQoc19kZXNjcmlwdGlvbkRlcHRoKTsKKyAgICBpZiAoc19kZXNjcmlw
dGlvbkRlcHRoLT5pc1NldCgpICYmICoqc19kZXNjcmlwdGlvbkRlcHRoKQorICAgICAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Mo
W3NlbGYgY2xhc3NdKV07CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGVzY3JpcHRpb25G
dW5jdGlvblR5cGU+KHNfb3JpZ2luYWxOU09iamVjdERlc2NyaXB0aW9uKShzZWxmLCBjbWQpOwog
fQogCiBKU0M6OkpTVmFsdWUgT2JqY0luc3RhbmNlOjpzdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7Ci0gICAgYXV0byBtZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChb
TlNPYmplY3QgY2xhc3NdLCBAc2VsZWN0b3IoZGVzY3JpcHRpb24pKTsKLSAgICBJTVAgb3JpZ2lu
YWxOU09iamVjdERlc2NyaXB0aW9uID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZCwg
KElNUClzd2l6emxlTlNPYmplY3REZXNjcmlwdGlvbik7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVEZXNjcmlwdGlvbkRlcHRoT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2UoaW5pdGlhbGl6ZURlc2NyaXB0aW9uRGVwdGhPbmNlRmxhZywgW10geworICAgICAgICBzX2Rl
c2NyaXB0aW9uRGVwdGggPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzx1aW50MzJfdD4oKTsKKyAg
ICAgICAgKipzX2Rlc2NyaXB0aW9uRGVwdGggPSAwOworICAgICAgICBhdXRvIG1ldGhvZCA9IGNs
YXNzX2dldEluc3RhbmNlTWV0aG9kKFtOU09iamVjdCBjbGFzc10sIEBzZWxlY3RvcihkZXNjcmlw
dGlvbikpOworICAgICAgICBzX29yaWdpbmFsTlNPYmplY3REZXNjcmlwdGlvbiA9IG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihtZXRob2QsIChJTVApc3dpenpsZU5TT2JqZWN0RGVzY3JpcHRpb24p
OworICAgIH0pOworCisgICAgKCoqc19kZXNjcmlwdGlvbkRlcHRoKSsrOwogICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQgPSBjb252ZXJ0TlNTdHJpbmdUb1N0cmluZyhleGVjLCBbZ2V0T2JqZWN0KCkg
ZGVzY3JpcHRpb25dKTsKLSAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kLCBvcmln
aW5hbE5TT2JqZWN0RGVzY3JpcHRpb24pOworICAgICgqKnNfZGVzY3JpcHRpb25EZXB0aCktLTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNDI5Y2VmMTFjYjlhNDRmOGE2ZWM3ZDMxY2RhMjdmMGJlOGJi
MDU0ZS4uNzIyZmU3MmI1ZjA1MzM4N2Y4ZmQyZWU0ODNkNmM4ZGFkZGQyZjNkMyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE2LTA0LTIwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYlNjcmlwdE9iamVjdCBkZXNjcmlwdGlvbiBzd2l6emxlciBzaG91bGQgd29yayBp
biBhIG11bHRpLXRocmVhZGVkIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTY4MDgKKworICAgICAgICBBZGQgYSB0ZXN0IGZvciBvdXIgTlNP
YmplY3Qgc3dpenpsaW5nIFRMUyBpbXBsZW1lbnRhdGlvbi4gVGhlIHRlc3QgcnVucyBvbgorICAg
ICAgICB0d28gdGhyZWFkcy4gT25lIGluIEpTIGFuZCBhbm90aGVyIGluIE9iamVjdGl2ZS1DLiBX
ZSBleHBlY3QgdGhlIEpTIHRocmVhZAorICAgICAgICB0byB1c2Ugb3VyIE5TT2JqZWN0IGRlc2Ny
aXB0aW9uIG92ZXJyaWRlIGFuZCB0aGUgT2JqZWN0aXZlLUMgdGhyZWFkIHRvIGFjdAorICAgICAg
ICBhcyB0aG91Z2ggaXQgd2FzIHVzaW5nIHRoZSBvcmlnaW5hbCBOU09iamVjdCBkZXNjcmlwdGlv
biBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNj
cmlwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9X
ZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChuc09iamVjdERl
c2NyaXB0aW9uVGVzdCk6CisgICAgICAgICgtW1dlYlNjcmlwdERlc2NyaXB0aW9uVGVzdCB3ZWJW
aWV3OmRpZEZpbmlzaExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDE2LTA0LTE5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIE9iamNJbnN0YW5jZTo6c3RyaW5nVmFsdWUgc2hvdWxkIG5vdCBjYWxsIE5T
T2JqZWN0J3MgZGVzY3JpcHRpb24gbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0
NzE5ODVkZDhkNTQwZjc3MWQzNDAwOTQ2ZWRhZDM5YWZkY2U0YTcuLjBkYTc0NzNmMDE1MDRjNTRm
ZTFiZjNiODkyNmE1MGU2MzIxMDY2MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OCw2
ICs4OCw4IEBACiAJCTUyQjhDRjk4MTU4NjhEOTEwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyQjhDRjk0MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5odG1sICovOyB9Owog
CQk1MkQ2NzNFRTFBRkIxMjczMDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhG
aWx0ZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJENjczRUMxQUZCMTI2ODAwRkExOUZFIC8qIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRo
RmlsdGVyaW5nLmNwcCAqLzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVu
dEZyYW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNw
cCAqLzsgfTsKKwkJNTM2NzcwMzQxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERl
c2NyaXB0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM2NzcwMzMxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9u
Lm1tICovOyB9OworCQk1MzY3NzAzNjFDQzgxQjYxMDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0
RGVzY3JpcHRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0
RGVzY3JpcHRpb24uaHRtbCAqLzsgfTsKIAkJNTcxNEVDQjkxQ0E4QjVCMDAwMDUxQUM4IC8qIERv
d25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERv
d25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi87IH07CiAJCTU3MTRFQ0JCMUNBOEJGRTQw
MDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQkExQ0E4
QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAqLzsg
fTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5h
bFVSTDIuaHRtbCAqLzsgfTsKQEAgLTQxNSw2ICs0MTcsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQk1MzY3NzAzNjFDQzgxQjYxMDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3Jp
cHRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzkwMUZCMTFDQUYxNDJEMDBF
RDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MTRFQ0JCMUNBOEJGRTQwMDA1
MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC02NTgsNiArNjYxLDggQEAKIAkJNTJENjczRUMxQUZCMTI2ODAwRkExOUZF
IC8qIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVyaW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVy
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFNUNFNDUxNEQyMUU5RDAw
M0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBhcmVudEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJF
NUNFNDgxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2Vi
U2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVj
dERlc2NyaXB0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0
RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFD
OCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAvKiBEb3du
bG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTUwMiw2ICsxNTA3LDcgQEAKIAkJCQkxQTdCRkMwQTE3MUEwQkRCMDBCQzVGNjQg
LyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSAqLywKIAkJCQlBNUUyMDI3MjE1QjIxODE5MDBDMTNF
MTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8sCiAJCQkJNzY0MzIyRDUxQjYx
Q0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi8sCisJCQkJ
NTM2NzcwMzMxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1t
ICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMTUzNSw2ICsxNTQxLDcgQEAKIAkJCQlDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVy
Ym9zZU1hcmt1cC5odG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLAogCQkJCUE1RTIwMjcwMTVC
MjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovLAorCQkJ
CTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5o
dG1sICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTgwNCw2ICsxODExLDcgQEAKIAkJCQk3Q0NFN0VFMTFBNDExQTlBMDA0NDdD
NEMgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRkND
NDUxQTlGRjQ1MzAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFRjkxQTQxMUFFNjAwNDQ3QzRDIC8qIEdldEluamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUzNjc3MDM0MUNDODAyMjgwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUUyMUE0MTFBOUEwMDQ0N0M0QyAvKiBHZXRQSURB
ZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjM1
MUE0MTFCOEUwMDQ0N0M0QyAvKiBIYXNoTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjM2MUE0MTFCOEUwMDQ0N0M0QyAvKiBIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTk1
NSw3ICsxOTYzLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwNzY2REQyMDFBNUFENTIwMDAyM0UzQkIgLyogUGVuZGluZ0FQSVJlcXVl
c3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2NkREMjAxQTVBRDUyMDAwMjNFM0JCIC8q
IFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUE1M0FGMUIz
MUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQjQ1
NEVDMUI0RTIzNkIwMDg1RUFBNiAvKiBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRGaW5pc2hMb2FkRm9y
RnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwMUZBRDFDQUYxMkMyMDBFRDY0RjkgLyog
TG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOWJiNWYyMDMxYTJlYWY5N2M3OGFkZGNhODhjOTA0ZDkzYmNm
Yjk3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2Vi
U2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxib2R5PgorICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGZvbyhiYXNlKSB7CisgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChi
YXNlICsgIiIgIT09ICI8TlNPYmplY3Q+IikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICA8L3NjcmlwdD4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2Vi
U2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RkY2FhOTY0NWI3NzNiOGMz
ODBmOTdkMjBjMTY5YTdjMTJjOTJkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tCkBAIC0wLDAgKzEs
ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgPGF0
b21pYz4KKyNpbXBvcnQgPHRocmVhZD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGlu
dGVyZmFjZSBXZWJTY3JpcHREZXNjcmlwdGlvblRlc3QgOiBOU09iamVjdCA8V2ViRnJhbWVMb2Fk
RGVsZWdhdGU+CitAZW5kCisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9v
bCBmYWlsZWRPYmpDRGVzY3JpcHRpb24geyBmYWxzZSB9OworCit2b2lkIG5zT2JqZWN0RGVzY3Jp
cHRpb25UZXN0KE5TT2JqZWN0ICpvYmplY3QpCit7CisgICAgTlNFcnJvciAqZXJyb3IgPSBudWxs
cHRyOworICAgIE5TUmVndWxhckV4cHJlc3Npb24gKnJlZ2V4cCA9IFtOU1JlZ3VsYXJFeHByZXNz
aW9uIHJlZ3VsYXJFeHByZXNzaW9uV2l0aFBhdHRlcm46QCI8TlNPYmplY3Q6IDB4WzAtOXxhLWZd
Kz4iIG9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgICAgICBOU1N0cmluZyAqZGVzY3JpcHRpb24gPSBbb2JqZWN0
IGRlc2NyaXB0aW9uXTsKKyAgICAgICAgaWYgKFtyZWdleHAgbnVtYmVyT2ZNYXRjaGVzSW5TdHJp
bmc6ZGVzY3JpcHRpb24gb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtkZXNjcmlwdGlv
biBsZW5ndGhdKV0gIT0gMSkKKyAgICAgICAgICAgIGZhaWxlZE9iakNEZXNjcmlwdGlvbiA9IHRy
dWU7CisgICAgfQorfQorCitAaW1wbGVtZW50YXRpb24gV2ViU2NyaXB0RGVzY3JpcHRpb25UZXN0
CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2FkRm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KK0Bl
bmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdDEsIFdlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uKQoreworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAx
MjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdl
YlNjcmlwdERlc2NyaXB0aW9uVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtXZWJTY3Jp
cHREZXNjcmlwdGlvblRlc3QgbmV3XSk7CisgICAgTlNPYmplY3QgKm9iamVjdCA9IFtbTlNPYmpl
Y3QgYWxsb2NdIGluaXRdOworCisgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9
IHRlc3RDb250cm9sbGVyLmdldCgpOworICAgIFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXQorICAgICAgICBVUkxGb3JSZXNvdXJjZTpAIldlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9u
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICBkaWRGaW5p
c2hMb2FkID0gZmFsc2U7CisgICAgZmFpbGVkT2JqQ0Rlc2NyaXB0aW9uID0gZmFsc2U7CisKKyAg
ICBzdGQ6OnRocmVhZCB0aHJlYWQxKG5zT2JqZWN0RGVzY3JpcHRpb25UZXN0LCBvYmplY3QpOwor
CisgICAgQ0ZCb29sZWFuUmVmIHJlc3VsdCA9IChDRkJvb2xlYW5SZWYpKFtbd2ViVmlldy5nZXQo
KSB3aW5kb3dTY3JpcHRPYmplY3RdIGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJmb28iIHdpdGhBcmd1
bWVudHM6QFsgb2JqZWN0IF1dKTsKKyAgICBFWFBFQ1RfRVEoQ0ZCb29sZWFuR2V0VmFsdWUocmVz
dWx0KSwgdHJ1ZSk7CisKKyAgICB0aHJlYWQxLmpvaW4oKTsKKyAgICBFWFBFQ1RfRVEoZmFpbGVk
T2JqQ0Rlc2NyaXB0aW9uLCBmYWxzZSk7CisgICAgW29iamVjdCByZWxlYXNlXTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276864</attachid>
            <date>2016-04-20 16:25:40 -0700</date>
            <delta_ts>2016-04-21 13:59:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156808-20160420162601.patch</filename>
            <type>text/plain</type>
            <size>15886</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgyZGI4MTQ0MjhhYjI3
NmI5ODZiZWIyZDRlMDNkZDQwZWQ2YzFjZi4uNmJlMDkzNDZhY2RjMmQ1ODRhZTNlMTg2N2IzZDg0
NWE3YmE5ZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA0LTIwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYlNjcmlwdE9i
amVjdCBkZXNjcmlwdGlvbiBzd2l6emxlciBzaG91bGQgd29yayBpbiBhIG11bHRpLXRocmVhZGVk
IHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTY4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBB
IFdlYktpdCBsZWdhY3kgQVBJIHVzZXIgbWlnaHQgYmUgcnVubmluZyBPYmplY3RpdmUtQyBjb2Rl
IG9uIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNvcnJ1
cHQgb3RoZXIgdGhyZWFkJ3MgTlNPYmplY3QgZGVzY3JpcHRpb24gbWV0aG9kCisgICAgICAgIHdl
IHVzZSBUTFMgdG8gcmVjb3JkIGlmIHdlIGFyZSBpbiB0aGUgc3RyaW5nVmFsdWUgZnVuY3Rpb24u
IEFzIGFuIGF0dGVtcHQgdG8KKyAgICAgICAgcHJlc2VydmUgYW55IHVzZXIgc3dpenpsaW5nIHdl
IHVwZGF0ZSB0aGUgbm9uLXN0cmluZ1ZhbHVlIE5TT2JqZWN0IGRlc2NyaXB0aW9uCisgICAgICAg
IG1ldGhvZCBvbiBlYWNoIGNhbGwgdG8gc3RyaW5nVmFsdWUgaWYgaXQgaGFzIGNoYW5nZWQuIEFk
ZGl0aW9uYWxseSwgdGhlIFRMUworICAgICAgICBuZWVkcyB0byBiZSBhIGludCBiZWNhdXNlIHRo
ZSB1c2VyIG1pZ2h0IGNhbGwgaW50byBzdHJpbmdWYWx1ZSwgYmFjayBpbnRvIEpTLAorICAgICAg
ICB0aGVuIGJhY2sgaW50byBzdHJpbmdWYWx1ZS4gSWYgdGhlIFRMUyB3YXMgYSBib29sZWFuIHRo
ZW4gaXQgd291bGQgYmUgdW5zZXQKKyAgICAgICAgYXQgdGhhdCBwb2ludCBzbyB3aGVuIHdlIHJl
dHVybiBpbnRvIHRoZSBmaXJzdCBzdHJpbmdWYWx1ZSBjYWxsIHdlIHdvdWxkIGNhbGwKKyAgICAg
ICAgdGhlIG9yaWdpbmFsIE5TT2JqZWN0IGRlc2NyaXB0aW9uIG1ldGhvZCByYXRoZXIgdGhhbiBv
dXIgb3ZlcnJpZGUuCisKKyAgICAgICAgVGVzdCBhZGRlZCB0byBBUEkgdGVzdHM6IFdlYktpdDEu
V2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW06CisgICAgICAgICgtW05TT2JqZWN0IF93ZWJfZGVzY3JpcHRpb25dKToKKyAg
ICAgICAgKE9iamNJbnN0YW5jZTo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoc3dpenpsZU5TT2Jq
ZWN0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorCiAyMDE2LTA0LTE5ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamNJbnN0YW5jZTo6c3RyaW5nVmFs
dWUgc2hvdWxkIG5vdCBjYWxsIE5TT2JqZWN0J3MgZGVzY3JpcHRpb24gbWV0aG9kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCA4ZWVjOWRmYTlhZWQ1
ODk2OGZjZjBkZmJmNDQ4MjM4ODgwNjAzYmNkLi42YTYzMmY0ZTMzMGM5MjYwYTI2MmY0MWY1ODI5
OWQzZTkzYjM4OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwOCwgMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDkgQEAK
ICNpbXBvcnQgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRT
cGVjaWZpYy5oPgogCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIE9CSkNfTE9HKGZvcm1hdEFuZEFy
Z3MuLi4pICgodm9pZCkwKQpAQCAtNDU5LDE3ICs0NjEsNDIgQEAgSlNDOjpKU1ZhbHVlIE9iamNJ
bnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZQogICAgIHJldHVybiB2YWx1ZU9mKGV4ZWMpOwogfQogCi1zdGF0aWMgTlNTdHJpbmcqIHN3
aXp6bGVOU09iamVjdERlc2NyaXB0aW9uKGlkIHNlbGYsIFNFTCkKK3N0YXRpYyBXVEY6OlRocmVh
ZFNwZWNpZmljPHVpbnQzMl90Piogc19kZXNjcmlwdGlvbkRlcHRoOworCitAaW50ZXJmYWNlIE5T
T2JqZWN0IChXZWJEZXNjcmlwdGlvbkNhdGVnb3J5KQorLSAoTlNTdHJpbmcgKilfd2ViX2Rlc2Ny
aXB0aW9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNPYmplY3QgKFdlYkRlc2NyaXB0aW9u
Q2F0ZWdvcnkpCisKKy0gKE5TU3RyaW5nICopX3dlYl9kZXNjcmlwdGlvbgogewotICAgIHJldHVy
biBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAlQCIsIEAiPCIsIE5TU3RyaW5nRnJv
bUNsYXNzKFtzZWxmIGNsYXNzXSksIEAiPiJdOworICAgIEFTU0VSVChzX2Rlc2NyaXB0aW9uRGVw
dGgpOworICAgIGlmIChzX2Rlc2NyaXB0aW9uRGVwdGgtPmlzU2V0KCkgJiYgKipzX2Rlc2NyaXB0
aW9uRGVwdGgpCisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwl
QD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKKyAgICAvLyBXZSBjYWxsIF93
ZWJfZGVzY3JpcHRpb24gaGVyZSBzaW5jZSB0aGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxs
ZWQKKyAgICAvLyBvbmNlIHdlIGhhdmUgYWxyZWFkeSBzd2l6emxlZCB0aGlzIG1ldGhvZCB3aXRo
IHRoZSBvbmUgb24gTlNPYmplY3QuCisgICAgLy8gVGh1cywgX3dlYl9kZXNjcmlwdGlvbiBpcyBh
Y3R1YWxseSB0aGUgb3JpZ2luYWwgZGVzY3JpcHRpb24gbWV0aG9kLgorICAgIHJldHVybiBbc2Vs
ZiBfd2ViX2Rlc2NyaXB0aW9uXTsKIH0KIAorQGVuZAorCiBKU0M6OkpTVmFsdWUgT2JqY0luc3Rh
bmNlOjpzdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgYXV0byBtZXRo
b2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChbTlNPYmplY3QgY2xhc3NdLCBAc2VsZWN0b3Io
ZGVzY3JpcHRpb24pKTsKLSAgICBJTVAgb3JpZ2luYWxOU09iamVjdERlc2NyaXB0aW9uID0gbWV0
aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZCwgKElNUClzd2l6emxlTlNPYmplY3REZXNjcmlw
dGlvbik7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVEZXNjcmlwdGlvbkRl
cHRoT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZURlc2NyaXB0aW9uRGVw
dGhPbmNlRmxhZywgW10geworICAgICAgICBzX2Rlc2NyaXB0aW9uRGVwdGggPSBuZXcgV1RGOjpU
aHJlYWRTcGVjaWZpYzx1aW50MzJfdD4oKTsKKyAgICAgICAgKipzX2Rlc2NyaXB0aW9uRGVwdGgg
PSAwOworCisgICAgICAgIGF1dG8gZGVzY3JpcHRpb25NZXRob2QgPSBjbGFzc19nZXRJbnN0YW5j
ZU1ldGhvZChbTlNPYmplY3QgY2xhc3NdLCBAc2VsZWN0b3IoZGVzY3JpcHRpb24pKTsKKyAgICAg
ICAgYXV0byB3ZWJEZXNjcmlwdGlvbk1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKFtO
U09iamVjdCBjbGFzc10sIEBzZWxlY3Rvcihfd2ViX2Rlc2NyaXB0aW9uKSk7CisgICAgICAgIG1l
dGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhkZXNjcmlwdGlvbk1ldGhvZCwgd2ViRGVzY3Jp
cHRpb25NZXRob2QpOworICAgIH0pOworCisgICAgKCoqc19kZXNjcmlwdGlvbkRlcHRoKSsrOwog
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBjb252ZXJ0TlNTdHJpbmdUb1N0cmluZyhleGVjLCBb
Z2V0T2JqZWN0KCkgZGVzY3JpcHRpb25dKTsKLSAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24o
bWV0aG9kLCBvcmlnaW5hbE5TT2JqZWN0RGVzY3JpcHRpb24pOworICAgICgqKnNfZGVzY3JpcHRp
b25EZXB0aCktLTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDI5Y2VmMTFjYjlhNDRmOGE2ZWM3ZDMx
Y2RhMjdmMGJlOGJiMDU0ZS4uNzIyZmU3MmI1ZjA1MzM4N2Y4ZmQyZWU0ODNkNmM4ZGFkZGQyZjNk
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDE2LTA0LTIwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYlNjcmlwdE9iamVjdCBkZXNjcmlwdGlvbiBzd2l6emxlciBz
aG91bGQgd29yayBpbiBhIG11bHRpLXRocmVhZGVkIHdvcmxkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY4MDgKKworICAgICAgICBBZGQgYSB0ZXN0
IGZvciBvdXIgTlNPYmplY3Qgc3dpenpsaW5nIFRMUyBpbXBsZW1lbnRhdGlvbi4gVGhlIHRlc3Qg
cnVucyBvbgorICAgICAgICB0d28gdGhyZWFkcy4gT25lIGluIEpTIGFuZCBhbm90aGVyIGluIE9i
amVjdGl2ZS1DLiBXZSBleHBlY3QgdGhlIEpTIHRocmVhZAorICAgICAgICB0byB1c2Ugb3VyIE5T
T2JqZWN0IGRlc2NyaXB0aW9uIG92ZXJyaWRlIGFuZCB0aGUgT2JqZWN0aXZlLUMgdGhyZWFkIHRv
IGFjdAorICAgICAgICBhcyB0aG91Z2ggaXQgd2FzIHVzaW5nIHRoZSBvcmlnaW5hbCBOU09iamVj
dCBkZXNjcmlwdGlvbiBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJTY3Jp
cHRPYmplY3REZXNjcmlwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbTogQWRkZWQuCisgICAgICAg
IChuc09iamVjdERlc2NyaXB0aW9uVGVzdCk6CisgICAgICAgICgtW1dlYlNjcmlwdERlc2NyaXB0
aW9uVGVzdCB3ZWJWaWV3OmRpZEZpbmlzaExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE2LTA0LTE5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamNJbnN0YW5jZTo6c3RyaW5nVmFsdWUgc2hvdWxk
IG5vdCBjYWxsIE5TT2JqZWN0J3MgZGVzY3JpcHRpb24gbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY0NzE5ODVkZDhkNTQwZjc3MWQzNDAwOTQ2ZWRhZDM5YWZkY2U0YTcuLjBkYTc0
NzNmMDE1MDRjNTRmZTFiZjNiODkyNmE1MGU2MzIxMDY2MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04OCw2ICs4OCw4IEBACiAJCTUyQjhDRjk4MTU4NjhEOTEwMDI4MTA1MyAvKiBTZXRE
b2N1bWVudFVSSS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQjhDRjk0MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5o
dG1sICovOyB9OwogCQk1MkQ2NzNFRTFBRkIxMjczMDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Np
b25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJENjczRUMxQUZCMTI2ODAwRkExOUZFIC8qIFdLUGFnZUNvcHlTZXNz
aW9uU3RhdGVXaXRoRmlsdGVyaW5nLmNwcCAqLzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0Iy
QkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJh
bWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNTM2NzcwMzQxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNj
cmlwdE9iamVjdERlc2NyaXB0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM2NzcwMzMxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVj
dERlc2NyaXB0aW9uLm1tICovOyB9OworCQk1MzY3NzAzNjFDQzgxQjYxMDBENDI1QjEgLyogV2Vi
U2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2Vi
U2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAqLzsgfTsKIAkJNTcxNEVDQjkxQ0E4QjVCMDAw
MDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQjgxQ0E4QjU4ODAw
MDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi87IH07CiAJCTU3MTRF
Q0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJh
bWUuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVx
dWVzdE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAvKiBEb3dubG9hZFJl
cXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKQEAgLTQxNSw2ICs0MTcsNyBAQAogCQkJZHN0
UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7
CiAJCQlmaWxlcyA9ICgKKwkJCQk1MzY3NzAzNjFDQzgxQjYxMDBENDI1QjEgLyogV2ViU2NyaXB0
T2JqZWN0RGVzY3JpcHRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzkwMUZC
MTFDQUYxNDJEMDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVx
dWVzdE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MTRFQ0JC
MUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC02NTgsNiArNjYxLDggQEAKIAkJNTJENjczRUMxQUZC
MTI2ODAwRkExOUZFIC8qIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVyaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFnZUNvcHlTZXNzaW9uU3Rh
dGVXaXRoRmlsdGVyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFNUNF
NDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJFNUNFNDgxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZV9CdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzY3NzAzMzFDQzgwMjI4MDBE
NDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdl
YlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2lu
YWxVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9y
aWdpbmFsVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JBMUNB
OEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1l
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JDMUNBOEMyMTgwMDA1
MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUwMiw2ICsxNTA3LDcgQEAKIAkJCQkxQTdCRkMwQTE3MUEw
QkRCMDBCQzVGNjQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSAqLywKIAkJCQlBNUUyMDI3MjE1
QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8sCiAJCQkJ
NzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMu
bW0gKi8sCisJCQkJNTM2NzcwMzMxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERl
c2NyaXB0aW9uLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTUzNSw2ICsxNTQxLDcgQEAKIAkJCQlDNTQwRjc4MzE1MkU1QTc4MDBB
NDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFD
MjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLAogCQkJ
CUE1RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5o
dG1sICovLAorCQkJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3RE
ZXNjcmlwdGlvbi5odG1sICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNvdXJjZXM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTgwNCw2ICsxODExLDcgQEAKIAkJCQk3Q0NFN0VFMTFB
NDExQTlBMDA0NDdDNEMgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RCRkNDNDUxQTlGRjQ1MzAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZy
YW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjkxQTQxMUFFNjAwNDQ3QzRDIC8qIEdl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUzNjc3MDM0MUNDODAyMjgwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3RE
ZXNjcmlwdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUUyMUE0MTFBOUEwMDQ0N0M0
QyAvKiBHZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjM1MUE0MTFCOEUwMDQ0N0M0QyAvKiBIYXNoTWFwLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjM2MUE0MTFCOEUwMDQ0N0M0QyAvKiBIYXNoU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTk1NSw3ICsxOTYzLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNl
OwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwNzY2REQyMDFBNUFENTIwMDAyM0UzQkIgLyogUGVu
ZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2NkREMjAxQTVBRDUy
MDAwMjNFM0JCIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEOUE1M0FGMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxQjQ1NEVDMUI0RTIzNkIwMDg1RUFBNiAvKiBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRG
aW5pc2hMb2FkRm9yRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwMUZBRDFDQUYxMkMy
MDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNj
cmlwdGlvbi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWJiNWYyMDMxYTJlYWY5N2M3OGFkZGNh
ODhjOTA0ZDkzYmNmYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGZvbyhi
YXNlKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChiYXNlICsgIiIgIT09ICI8TlNPYmplY3Q+IikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICA8
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RkY2Fh
OTY0NWI3NzNiOGMzODBmOTdkMjBjMTY5YTdjMTJjOTJkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1t
CkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIK
KyNpbXBvcnQgPGF0b21pYz4KKyNpbXBvcnQgPHRocmVhZD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworQGludGVyZmFjZSBXZWJTY3JpcHREZXNjcmlwdGlvblRlc3QgOiBOU09iamVjdCA8
V2ViRnJhbWVMb2FkRGVsZWdhdGU+CitAZW5kCisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7
CitzdGF0aWMgYm9vbCBmYWlsZWRPYmpDRGVzY3JpcHRpb24geyBmYWxzZSB9OworCit2b2lkIG5z
T2JqZWN0RGVzY3JpcHRpb25UZXN0KE5TT2JqZWN0ICpvYmplY3QpCit7CisgICAgTlNFcnJvciAq
ZXJyb3IgPSBudWxscHRyOworICAgIE5TUmVndWxhckV4cHJlc3Npb24gKnJlZ2V4cCA9IFtOU1Jl
Z3VsYXJFeHByZXNzaW9uIHJlZ3VsYXJFeHByZXNzaW9uV2l0aFBhdHRlcm46QCI8TlNPYmplY3Q6
IDB4WzAtOXxhLWZdKz4iIG9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICBOU1N0cmluZyAqZGVzY3JpcHRp
b24gPSBbb2JqZWN0IGRlc2NyaXB0aW9uXTsKKyAgICAgICAgaWYgKFtyZWdleHAgbnVtYmVyT2ZN
YXRjaGVzSW5TdHJpbmc6ZGVzY3JpcHRpb24gb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAs
IFtkZXNjcmlwdGlvbiBsZW5ndGhdKV0gIT0gMSkKKyAgICAgICAgICAgIGZhaWxlZE9iakNEZXNj
cmlwdGlvbiA9IHRydWU7CisgICAgfQorfQorCitAaW1wbGVtZW50YXRpb24gV2ViU2NyaXB0RGVz
Y3JpcHRpb25UZXN0CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0g
dHJ1ZTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktp
dDEsIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uKQoreworICAgIFJldGFpblB0cjxXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAg
UmV0YWluUHRyPFdlYlNjcmlwdERlc2NyaXB0aW9uVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9w
dE5TKFtXZWJTY3JpcHREZXNjcmlwdGlvblRlc3QgbmV3XSk7CisgICAgTlNPYmplY3QgKm9iamVj
dCA9IFtbTlNPYmplY3QgYWxsb2NdIGluaXRdOworCisgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxv
YWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOworICAgIFtbd2ViVmlldy5nZXQoKSBt
YWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXQorICAgICAgICBVUkxGb3JSZXNvdXJjZTpAIldlYlNjcmlwdE9iamVj
dERlc2NyaXB0aW9uIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsK
KyAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CisgICAgZmFpbGVkT2JqQ0Rlc2NyaXB0aW9uID0g
ZmFsc2U7CisKKyAgICBzdGQ6OnRocmVhZCB0aHJlYWQxKG5zT2JqZWN0RGVzY3JpcHRpb25UZXN0
LCBvYmplY3QpOworCisgICAgQ0ZCb29sZWFuUmVmIHJlc3VsdCA9IChDRkJvb2xlYW5SZWYpKFtb
d2ViVmlldy5nZXQoKSB3aW5kb3dTY3JpcHRPYmplY3RdIGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJm
b28iIHdpdGhBcmd1bWVudHM6QFsgb2JqZWN0IF1dKTsKKyAgICBFWFBFQ1RfRVEoQ0ZCb29sZWFu
R2V0VmFsdWUocmVzdWx0KSwgdHJ1ZSk7CisKKyAgICB0aHJlYWQxLmpvaW4oKTsKKyAgICBFWFBF
Q1RfRVEoZmFpbGVkT2JqQ0Rlc2NyaXB0aW9uLCBmYWxzZSk7CisgICAgW29iamVjdCByZWxlYXNl
XTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>