<?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>160950</bug_id>
          
          <creation_ts>2016-08-17 16:13:33 -0700</creation_ts>
          <short_desc>Add basic support for connected and disconnected callbacks</short_desc>
          <delta_ts>2016-09-01 16:16:31 -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>DOM</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220989</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-17 16:13:33 -0700</bug_when>
    <thetext>Add the support for connected and disconnected callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220995</commentid>
    <comment_count>1</comment_count>
      <attachid>286343</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-17 16:26:59 -0700</bug_when>
    <thetext>Created attachment 286343
Adds the basic support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221002</commentid>
    <comment_count>2</comment_count>
      <attachid>286344</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-17 17:02:32 -0700</bug_when>
    <thetext>Created attachment 286344
Fixed GTK+/EFL builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221007</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-17 17:17:42 -0700</bug_when>
    <thetext>This change looks perf neutral on Dromaeo DOM modify:

Without patch:
DOM Modification:Runs: 714/s stdev=0.0%
appendChild:Runs: 1.655K/s stdev=0.8%
cloneNode:Runs: 281/s stdev=8.5%
createElement:Runs: 1.12K/s stdev=6.5%
createTextNode:Runs: 949/s stdev=2.1%
innerHTML:Runs: 170/s stdev=1.3%
insertBefore:Runs: 1.578K/s stdev=0.5%

With patch:
DOM Modification:Runs: 719/s stdev=0.0%
appendChild:Runs: 1.652K/s stdev=0.4%
cloneNode:Runs: 288/s stdev=7.6%
createElement:Runs: 1.13K/s stdev=5.7%
createTextNode:Runs: 953/s stdev=1.4%
innerHTML:Runs: 168/s stdev=1.1%
insertBefore:Runs: 1.593K/s stdev=0.4%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221170</commentid>
    <comment_count>4</comment_count>
      <attachid>286344</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-18 13:31:17 -0700</bug_when>
    <thetext>Comment on attachment 286344
Fixed GTK+/EFL builds

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

r=me with comments.

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:155
&gt; +void JSCustomElementInterface::invokeCallback(Element&amp; element, JSObject* callback, ArgumentAdder arguementAdder)

Typo: arguementAdder. Although I don&apos;t like this name. Maybe we can call it &quot;addArguments&quot;.

Do we really need a template here? If we used &quot;const Function&lt;void(ExecState*, MarkedArgumentBuffer&amp;)&gt;&amp; addArguments = {}&quot; then the call sites that don&apos;t want to add arguments would look much nicer.

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:179
&gt; +    arguementAdder(state, args);

Typo: arguementAdder

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:199
&gt; +    invokeCallback(element, m_connectedCallback.get(), [&amp;](ExecState*, MarkedArgumentBuffer&amp;) { });

Don&apos;t need the &amp;

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:209
&gt; +    invokeCallback(element, m_disconnectedCallback.get(), [&amp;](ExecState*, MarkedArgumentBuffer&amp;) { });

Don&apos;t need the &amp;

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:227
&gt; +        args.append(namespaceURI == nullAtom ? jsNull() : jsStringWithCache(state, attributeName.namespaceURI()));

Can use namespaceURI instead of attributeName.namespaceURI() at the end.

Also we have jsStringOrNull() in JSDOMBinding.h for this purpose so you don&apos;t need this ternary.

Ditto for all the ternaries above.

&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:94
&gt; +CEReactions

Needs to be moved for alphabetical sorting.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:130
&gt; +        queue-&gt;m_items.append(LifecycleQueueItem(LifecycleQueueItem::Type::Connected, element, *elementInterface));

We could probably use { LifecycleQueueItem::Type::Connected, element, *elementInterface } to avoid specifying LifecycleQueueItem explicitly.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:140
&gt; +        queue-&gt;m_items.append(LifecycleQueueItem(LifecycleQueueItem::Type::Disconnected, element, *elementInterface));

Could probably use { } as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221212</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-18 15:21:37 -0700</bug_when>
    <thetext>Committed r204611: &lt;http://trac.webkit.org/changeset/204611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225598</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-01 16:16:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/28090372&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286343</attachid>
            <date>2016-08-17 16:26:59 -0700</date>
            <delta_ts>2016-08-17 17:02:29 -0700</delta_ts>
            <desc>Adds the basic support</desc>
            <filename>bug-160950-20160817162511.patch</filename>
            <type>text/plain</type>
            <size>37521</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjZGNhZmQyNDc4ZDMz
ZDI0OGM4Y2M0N2JkODIzZWUzN2M2ZjdmZC4uOGJkNGZmYWZlNTQwZmM3YWIzMGY1NjQ1MWQwMWQ3
NGZlNzA4OTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTA4LTE3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0
IGZvciBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBjYWxsYmFja3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRoZSBiYXNpYyBzdXBwb3J0
IGZvciBjdXN0b20gZWxlbWVudHMnIGNvbm5lY3RlZENhbGxiYWNrIGFuZCBkaXNjb25uZWN0ZWRD
YWxsYmFjay4gVGhlc2UgY2FsbGJhY2tzCisgICAgICAgIGFyZSBlbnF1ZXVlZCBieSBpbnNlcnRp
bmcgYW5kIHJlbW92aW5nIGEgbm9kZSBhcyBzcGVjJ2VkIGJ5IGh0dHBzOi8vZG9tLnNwZWMud2hh
dHdnLm9yZy8jY29uY2VwdC1ub2RlLWluc2VydAorICAgICAgICBhbmQgaHR0cHM6Ly9kb20uc3Bl
Yy53aGF0d2cub3JnLyNjb25jZXB0LW5vZGUtcmVtb3ZlCisKKyAgICAgICAgRm9yIG5vdywgd2Ug
b25seSBzdXBwb3J0IGNhbGxiYWNrcyBvbiBhcHBlbmRDaGlsZCBhbmQgcmVtb3ZlQ2hpbGQgdG8g
bGltaXQgdGhlIGFtb3VudCBvZiBjb2RlIGNoYW5nZXMgYW5kCisgICAgICAgIHRlc3RzIHRoYXQg
bmVlZCB0byBiZSBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyByZW5hbWVzIEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJhY2tzIElETCBh
dHRyaWJ1dGUgdG8gQ0VSZWFjdGlvbnMgdG8gbWF0Y2gKKyAgICAgICAgdGhlIGxhdGVzdCBzcGVj
aWZpY2F0aW9uOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRp
bmcuaHRtbCNjZXJlYWN0aW9ucworCisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50
cy9jb25uZWN0ZWQtY2FsbGJhY2tzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3VzdG9tLWVs
ZW1lbnRzL2Rpc2Nvbm5lY3RlZC1jYWxsYmFja3MuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZTo6aW52b2tlQ2FsbGJhY2spOiBFeHRyYWN0ZWQgZnJvbSBpbnZv
a2VBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2U6OnNldENvbm5lY3RlZENhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNvbm5lY3RlZENhbGxiYWNr
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnNl
dERpc2Nvbm5lY3RlZENhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZURpc2Nvbm5lY3RlZENhbGxiYWNrKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnNldEF0dHJpYnV0ZUNo
YW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U6Omludm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayk6IFJlbmFtZWQgZnJvbSBhdHRyaWJ1
dGVDaGFuZ2VkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5oOiBBZGRlZCBtX2Nvbm5lY3RlZENhbGxiYWNrIGFuZCBtX2Rpc2Nvbm5lY3RlZENhbGxiYWNr
IGFzIGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcy4gQWxzbyByZW1vdmVkIHRoZSBzdXBlcmZs
dW91cyBtdXRhYmxlIHF1YWxpZmllciBmcm9tIG1fY29uc3RydWN0b3IgbV9hdHRyaWJ1dGVDaGFu
Z2VkQ2FsbGJhY2suCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50c1JlZ2lz
dHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eTo6ZGVmaW5lKTogU3RvcmUgY29ubmVjdGVkQ2FsbGJhY2sgYW5kIGRpc2Nvbm5lY3RlZENhbGxi
YWNrLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eS5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKTogQ2FsbCBlbnF1ZXVlQ29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tKTogQ2FsbCBlbnF1ZXVl
RGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6
CisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjppbnZva2UpOiBBZGRlZCBjYWxscyB0byBpbnZva2VD
b25uZWN0ZWRDYWxsYmFjayBhbmQgaW52b2tlRGlzY29ubmVjdGVkQ2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjpmaW5kSW50ZXJmYWNlRm9yQ3VzdG9tRWxlbWVudCk6IEV4dHJhY3RlZCBmcm9t
IGVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tJZk5lZWRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVl
ZGVkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjpl
bnF1ZXVlRGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFja0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0xpZmVj
eWNsZUNhbGxiYWNrUXVldWUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisKIDIwMTYtMDgt
MTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY3VzdG9tRWxl
bWVudHMuZGVmaW5lIHNob3VsZCByZXRyaWV2ZSBsaWZlY3ljbGUgY2FsbGJhY2tzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcAppbmRleCBiYTdhNDMxODhjNWIyZDU2ODk3MjA0MmNhMDM0NmEzMWQ1YmJkMDk5Li41MjMx
ZWE2NDg2YmQxZGZiMmU3YTI0M2Q1N2RmYzJmYjA4ZWVmODdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAg
LTE1MSwyNyArMTUxLDIwIEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRl
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIEFTU0VSVCh3cmFwcGVkRWxlbWVudC0+aXND
dXN0b21FbGVtZW50KCkpOwogfQogCi12b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6c2V0
QXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb2JzZXJ2ZWRBdHRyaWJ1dGVzKQotewotICAgIG1fYXR0cmlidXRlQ2hh
bmdlZENhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgbV9vYnNlcnZlZEF0dHJpYnV0ZXMuY2xlYXIo
KTsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBvYnNlcnZlZEF0dHJpYnV0ZXMpCi0gICAgICAgIG1f
b2JzZXJ2ZWRBdHRyaWJ1dGVzLmFkZChuYW1lKTsKLX0KLQotdm9pZCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6OmF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmd1bWVudEFk
ZGVyPgordm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNhbGxiYWNrKEVsZW1l
bnQmIGVsZW1lbnQsIEpTT2JqZWN0KiBjYWxsYmFjaywgQXJndW1lbnRBZGRlciBhcmd1ZW1lbnRB
ZGRlcikKIHsKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKLQotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
aXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisKKyAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJU
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgKm1faXNvbGF0ZWRXb3JsZCk7CiAg
ICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwpAQCAtMTc5
LDI3ICsxNzIsNjIgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZUNo
YW5nZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWUKICAgICBKU09iamVjdCoganNF
bGVtZW50ID0gYXNPYmplY3QodG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBlbGVtZW50KSk7CiAK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fYXR0cmli
dXRlQ2hhbmdlZENhbGxiYWNrLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX2F0dHJpYnV0
ZUNoYW5nZWRDYWxsYmFjay5nZXQoKSwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gY2FsbGJhY2stPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0
YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0gYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkko
KTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7Ci0gICAgYXJn
cy5hcHBlbmQob2xkVmFsdWUgPT0gbnVsbEF0b20gPyBqc051bGwoKSA6IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBvbGRWYWx1ZSkpOwotICAgIGFyZ3MuYXBwZW5kKG5ld1ZhbHVlID09IG51bGxB
dG9tID8ganNOdWxsKCkgOiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbmV3VmFsdWUpKTsKLSAg
ICBhcmdzLmFwcGVuZChuYW1lc3BhY2VVUkkgPT0gbnVsbEF0b20gPyBqc051bGwoKSA6IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSk7CisgICAg
YXJndWVtZW50QWRkZXIoc3RhdGUsIGFyZ3MpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0
aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwogCiAgICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiBleGNlcHRpb247Ci0gICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKHN0YXRl
LCBtX2F0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjay5nZXQoKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c0VsZW1lbnQsIGFyZ3MsIGV4Y2VwdGlvbik7CisgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpj
YWxsKHN0YXRlLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc0VsZW1lbnQsIGFyZ3Ms
IGV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5j
dGlvbihjb29raWUsIGNvbnRleHQpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmVw
b3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOwogfQotICAgIAorCit2b2lkIEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZTo6c2V0Q29ubmVjdGVkQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2Fs
bGJhY2spCit7CisgICAgbV9jb25uZWN0ZWRDYWxsYmFjayA9IGNhbGxiYWNrOworfQorCit2b2lk
IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6aW52b2tlQ29ubmVjdGVkQ2FsbGJhY2soRWxlbWVu
dCYgZWxlbWVudCkKK3sKKyAgICBpbnZva2VDYWxsYmFjayhlbGVtZW50LCBtX2Nvbm5lY3RlZENh
bGxiYWNrLmdldCgpLCBbJl0oRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXImKSB7IH0p
OworfQorCit2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6c2V0RGlzY29ubmVjdGVkQ2Fs
bGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2spCit7CisgICAgbV9kaXNjb25uZWN0ZWRDYWxs
YmFjayA9IGNhbGxiYWNrOworfQorCit2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6aW52
b2tlRGlzY29ubmVjdGVkQ2FsbGJhY2soRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpbnZva2VD
YWxsYmFjayhlbGVtZW50LCBtX2Rpc2Nvbm5lY3RlZENhbGxiYWNrLmdldCgpLCBbJl0oRXhlY1N0
YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXImKSB7IH0pOworfQorCit2b2lkIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZTo6c2V0QXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JzZXJ2ZWRBdHRyaWJ1dGVzKQorewor
ICAgIG1fYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbV9vYnNlcnZl
ZEF0dHJpYnV0ZXMuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBvYnNlcnZlZEF0dHJp
YnV0ZXMpCisgICAgICAgIG1fb2JzZXJ2ZWRBdHRyaWJ1dGVzLmFkZChuYW1lKTsKK30KKwordm9p
ZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFj
ayhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KQoreworICAgIGludm9rZUNhbGxiYWNrKGVsZW1lbnQsIG1fYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrLmdldCgpLCBbJl0oRXhlY1N0YXRlKiBzdGF0ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFy
Z3MpIHsKKyAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJp
YnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICAgICAgYXJncy5hcHBlbmQob2xkVmFsdWUgPT0g
bnVsbEF0b20gPyBqc051bGwoKSA6IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBvbGRWYWx1ZSkp
OworICAgICAgICBhcmdzLmFwcGVuZChuZXdWYWx1ZSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDog
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG5ld1ZhbHVlKSk7CisgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJID0gYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKTsKKyAg
ICAgICAgYXJncy5hcHBlbmQobmFtZXNwYWNlVVJJID09IG51bGxBdG9tID8ganNOdWxsKCkgOiBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkpOwor
ICAgIH0pOworfQorCiB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6ZGlkVXBncmFkZUxh
c3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpCiB7CiAgICAgbV9jb25zdHJ1Y3Rpb25TdGFj
ay5sYXN0KCkgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaAppbmRleCAyY2JkN2JiOWYwNzQ1MzZjYWY2MmQz
MGFjM2QxNGRhOWFhZGRjZjEyLi5lZjMwMTc3NGY3NmE0Mjk0MmY1OTZjOGFjNzYxYTVlYWVkY2Q1
OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuaApAQCAtNjYsOSArNjYsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCB1
cGdyYWRlRWxlbWVudChFbGVtZW50Jik7CiAKKyAgICB2b2lkIHNldENvbm5lY3RlZENhbGxiYWNr
KEpTQzo6SlNPYmplY3QqKTsKKyAgICB2b2lkIGludm9rZUNvbm5lY3RlZENhbGxiYWNrKEVsZW1l
bnQmKTsKKworICAgIHZvaWQgc2V0RGlzY29ubmVjdGVkQ2FsbGJhY2soSlNDOjpKU09iamVjdCop
OworICAgIHZvaWQgaW52b2tlRGlzY29ubmVjdGVkQ2FsbGJhY2soRWxlbWVudCYpOworCiAgICAg
dm9pZCBzZXRBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYnNlcnZlZEF0dHJpYnV0ZXMpOwogICAgIGJvb2wgb2Jz
ZXJ2ZXNBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBt
X29ic2VydmVkQXR0cmlidXRlcy5jb250YWlucyhuYW1lKTsgfQotICAgIHZvaWQgYXR0cmlidXRl
Q2hhbmdlZChFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZvaWQgaW52
b2tlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yKCkgeyBy
ZXR1cm4gbV9jb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtODQsOSArOTAsMTMgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEFyZ3VtZW50QWRkZXI+IHZvaWQgaW52b2tlQ2FsbGJhY2soRWxl
bWVudCYsIEpTQzo6SlNPYmplY3QqLCBBcmd1bWVudEFkZGVyKTsKKwogICAgIFF1YWxpZmllZE5h
bWUgbV9uYW1lOwotICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3Ry
dWN0b3I7Ci0gICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV9hdHRyaWJ1dGVD
aGFuZ2VkQ2FsbGJhY2s7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0
b3I7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29ubmVjdGVkQ2FsbGJhY2s7Cisg
ICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fZGlzY29ubmVjdGVkQ2FsbGJhY2s7CisgICAg
SlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrOwogICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKICAgICBWZWN0b3I8UmVm
UHRyPEVsZW1lbnQ+LCAxPiBtX2NvbnN0cnVjdGlvblN0YWNrOwogICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiBtX29ic2VydmVkQXR0cmlidXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRzUmVnaXN0cnlDdXN0b20uY3BwCmlu
ZGV4IGIzNGUyZGRmZGRhNGM0MjNiMTQwYWU1YzczM2VkZTk3MTFkOTFkMTcuLjJhNTY4OWJhZTI0
OTQ0MDY2MWQ5NTc5ZThjMzI4MjdkODRlMWU4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Q3VzdG9tLmNw
cApAQCAtMTA0LDI0ICsxMDQsMjYgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRzUmVnaXN0cnk6
OmRlZmluZShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJvdG90
eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOwogICAgIEpTT2JqZWN0JiBwcm90b3R5cGVPYmplY3Qg
PSAqYXNPYmplY3QocHJvdG90eXBlVmFsdWUpOwogCi0gICAgLy8gRklYTUU6IEFkZCB0aGUgc3Vw
cG9ydCBmb3IgY29ubmVjdGVkQ2FsbGJhY2suCi0gICAgZ2V0TGlmZWN5Y2xlQ2FsbGJhY2soc3Rh
dGUsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb25uZWN0
ZWRDYWxsYmFjayIpKTsKKyAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0b20sIGxvY2FsTmFt
ZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CisgICAgYXV0byBlbGVtZW50SW50ZXJm
YWNlID0gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjcmVhdGUobmFtZSwgY29uc3RydWN0b3Is
IGdsb2JhbE9iamVjdCgpKTsKKworICAgIGF1dG8qIGNvbm5lY3RlZENhbGxiYWNrID0gZ2V0TGlm
ZWN5Y2xlQ2FsbGJhY2soc3RhdGUsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJjb25uZWN0ZWRDYWxsYmFjayIpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmIChjb25uZWN0ZWRD
YWxsYmFjaykKKyAgICAgICAgZWxlbWVudEludGVyZmFjZS0+c2V0Q29ubmVjdGVkQ2FsbGJhY2so
Y29ubmVjdGVkQ2FsbGJhY2spOwogCi0gICAgLy8gRklYTUU6IEFkZCB0aGUgc3VwcG9ydCBmb3Ig
ZGlzY29ubmVjdGVkQ2FsbGJhY2suCi0gICAgZ2V0TGlmZWN5Y2xlQ2FsbGJhY2soc3RhdGUsIHBy
b3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJkaXNjb25uZWN0ZWRD
YWxsYmFjayIpKTsKKyAgICBhdXRvKiBkaXNjb25uZWN0ZWRDYWxsYmFjayA9IGdldExpZmVjeWNs
ZUNhbGxiYWNrKHN0YXRlLCBwcm90b3R5cGVPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiZGlzY29ubmVjdGVkQ2FsbGJhY2siKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoZGlzY29ubmVjdGVk
Q2FsbGJhY2spCisgICAgICAgIGVsZW1lbnRJbnRlcmZhY2UtPnNldERpc2Nvbm5lY3RlZENhbGxi
YWNrKGRpc2Nvbm5lY3RlZENhbGxiYWNrKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBv
cnQgZm9yIGFkb3B0ZWRDYWxsYmFjay4KICAgICBnZXRMaWZlY3ljbGVDYWxsYmFjayhzdGF0ZSwg
cHJvdG90eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFkb3B0ZWRDYWxs
YmFjayIpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCi0gICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5h
bWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOwotICAgIGF1dG8gZWxlbWVudEludGVy
ZmFjZSA9IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y3JlYXRlKG5hbWUsIGNvbnN0cnVjdG9y
LCBnbG9iYWxPYmplY3QoKSk7Ci0KICAgICBhdXRvKiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sg
PSBnZXRMaWZlY3ljbGVDYWxsYmFjayhzdGF0ZSwgcHJvdG90eXBlT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIpKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCAwMWFiMjlmNGYzYjlkOTEwNmY1NGVkZWFjMzZjZmEwMzk4OTJmZWNkLi4wMjI1OTg0N2Vl
ZjZiODljNDM5OGE3OTg3ZTE3OTlhMTI0YmE0MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzMzNSw3ICszMzM1LDcg
QEAgRU5ECiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0g
PSAxOwogCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrcyJ9KSB7Cisg
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDRVJlYWN0aW9ucyJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUylcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3Vz
dG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaztcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGMzODdhMGYxZjRhNzIxNDkw
MGJiNDhkYmE0MzgxYjJhMDAxNDc1NDcuLjU4MTY3MzEzYmJkM2ZlY2FkYzIwZjYyZTVmZjAxMjk4
YWI0MTQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLnR4dApAQCAtOTEsNyArOTEsNyBAQCBKU0xlZ2FjeVBhcmVudD0qCiBMZW5pZW50
VGhpcwogTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogTmFtZWRDb25zdHJ1Y3Rvcj0qCi1JbnZva2Vz
Q3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrcworQ0VSZWFjdGlvbnMKIE5ld0ltcHVyZVBy
b3BlcnR5RmlyZXNXYXRjaHBvaW50cwogTmV3T2JqZWN0CiBOb0ludGVyZmFjZU9iamVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaWRsCmluZGV4IDBjZjhj
NjRmZTJkOWYzZGU4OWMzMGE2NTgwMWEyYjFhMzA5NzhkMTMuLjNjZGMxNDVjOWJlMzkwMjY0Y2U5
YzExOGY2M2Q1ZGM4YmYwMzY1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50c1JlZ2lzdHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudHNSZWdpc3RyeS5pZGwKQEAgLTI5LDYgKzI5LDYgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5IHsKIAotICAgIFtJ
bnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrcywgQ3VzdG9tXSB2b2lkIGRlZmlu
ZShET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3IpOworICAgIFtDRVJlYWN0aW9u
cywgQ3VzdG9tXSB2b2lkIGRlZmluZShET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0
b3IpOwogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDExYTA3YWIyOTIzOTU0YzQ4NGJj
NTBiNzgzMDI2NDhjNjM1MTU3YjcuLjczMTM3YzllNDA0NzFiN2IxYzc0NDBiZGEzZTE3YzJmMDEy
YmE1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1NzksNiArMTU3OSw5IEBAIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmIGluc2VydGlvCiAgICAgICAgICAgICB1cGRhdGVMYWJlbCgqbmV3U2NvcGUsIG51
bGxBdG9tLCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvckF0dHIpKTsKICAgICB9
CiAKKyAgICBpZiAobmV3RG9jdW1lbnQgJiYgVU5MSUtFTFkoaXNDdXN0b21FbGVtZW50KCkpKQor
ICAgICAgICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQ29ubmVjdGVkQ2FsbGJhY2tJ
Zk5lZWRlZCgqdGhpcyk7CisKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIApAQCAtMTYy
NCw2ICsxNjI3LDkgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBp
bnNlcnRpb25Qb2ludCkKICAgICAgICAgICAgIGlmIChvbGRTY29wZS0+c2hvdWxkQ2FjaGVMYWJl
bHNCeUZvckF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUxhYmVsKCpvbGRTY29w
ZSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKSwgbnVsbEF0b20pOwog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG9sZERvY3VtZW50ICYmIFVOTElLRUxZKGlzQ3VzdG9t
RWxlbWVudCgpKSkKKyAgICAgICAgICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVE
aXNjb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzKTsKICAgICB9CiAKICAgICBpZiAoIXBh
cmVudE5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IGQyYTg3ZGVlMzQ5NmM0OWUz
NzRhYjg1MzMyOWMyNDdmNmYzMjUzZWYuLmU2Y2JmMGY5YmMxMGUxMzU1OGNiMzFkNjI5NmI2MTFm
MGIzYTE0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTMxLDE1ICszMSwxMyBAQAogCiAg
ICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgW09iakNM
ZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBJbnZva2VzQ3VzdG9tRWxl
bWVudExpZmVjeWNsZUNhbGxiYWNrc10KKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJz
LCBSYWlzZXNFeGNlcHRpb24sIENFUmVhY3Rpb25zXSB2b2lkIHNldEF0dHJpYnV0ZShET01TdHJp
bmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAotICAgIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0
cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwotCi0gICAgW0ludm9rZXNDdXN0b21FbGVtZW50
TGlmZWN5Y2xlQ2FsbGJhY2tzXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7
CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7
CiAgICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgbmFtZSk7CiAKLSAgICBbUmFp
c2VzRXhjZXB0aW9uLCBJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrc10gQXR0
cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwotICAgIFtSYWlzZXNFeGNlcHRpb24s
IEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJhY2tzXSBBdHRyIHJlbW92ZUF0dHJp
YnV0ZU5vZGUoQXR0ciBvbGRBdHRyKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBDRVJlYWN0aW9u
c10gQXR0cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOworICAgIFtSYWlzZXNFeGNl
cHRpb24sIENFUmVhY3Rpb25zXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciBvbGRBdHRy
KTsKIAogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBu
YW1lKTsKIApAQCAtNTAsMTYgKzQ4LDE0IEBACiAKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJh
bWV0ZXJzXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJ
LCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRl
cnMsIFJhaXNlc0V4Y2VwdGlvbiwgSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFj
a3NdCi0KLSAgICB2b2lkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKKyAgICBbT2JqQ0xlZ2Fj
eVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb24sIENFUmVhY3Rpb25zXSB2b2lkIHNl
dEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRl
cnMsIEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJhY2tzXSB2b2lkIHJlbW92ZUF0
dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsK
KyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBDRVJlYWN0aW9uc10gdm9pZCByZW1v
dmVBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFt
ZSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKERPTVN0cmlu
Zz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAogICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnNdIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGVOUyhET01TdHJpbmc/IG5h
bWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbiwg
SW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdIEF0dHI/IHNldEF0dHJpYnV0
ZU5vZGVOUyhBdHRyIG5ld0F0dHIpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIENFUmVhY3Rpb25z
XSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciBuZXdBdHRyKTsKICAgICBib29sZWFuIGhh
c0F0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiAKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJh
bWV0ZXJzXSBib29sZWFuIGhhc0F0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBE
T01TdHJpbmcgbG9jYWxOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxs
YmFja1F1ZXVlLmNwcAppbmRleCA4MzdkM2JjODI5NzYwN2E4NWUxNGFkYjE1NDc5OTcxYzA2YWMx
MTQ4Li45NDNlZTdmNWQxYWZmN2QwNWJlYTNlZGZmYzU5ZjU4YmZiNWY4ODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCkBAIC00NCw2ICs0NCw4
IEBAIGNsYXNzIExpZmVjeWNsZVF1ZXVlSXRlbSB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBU
eXBlIHsKICAgICAgICAgRWxlbWVudFVwZ3JhZGUsCisgICAgICAgIENvbm5lY3RlZCwKKyAgICAg
ICAgRGlzY29ubmVjdGVkLAogICAgICAgICBBdHRyaWJ1dGVDaGFuZ2VkLAogICAgIH07CiAKQEAg
LTY4LDkgKzcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBUeXBlOjpFbGVtZW50VXBncmFk
ZToKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT51cGdyYWRlRWxlbWVudChtX2VsZW1lbnQuZ2V0
KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6Q29ubmVjdGVkOgor
ICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmludm9rZUNvbm5lY3RlZENhbGxiYWNrKG1fZWxlbWVu
dC5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlOjpEaXNjb25u
ZWN0ZWQ6CisgICAgICAgICAgICBtX2ludGVyZmFjZS0+aW52b2tlRGlzY29ubmVjdGVkQ2FsbGJh
Y2sobV9lbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5
cGU6OkF0dHJpYnV0ZUNoYW5nZWQ6CiAgICAgICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVOYW1l
KTsKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2VkKG1fZWxlbWVudC5n
ZXQoKSwgbV9hdHRyaWJ1dGVOYW1lLnZhbHVlKCksIG1fb2xkVmFsdWUsIG1fbmV3VmFsdWUpOwor
ICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmludm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayht
X2VsZW1lbnQuZ2V0KCksIG1fYXR0cmlidXRlTmFtZS52YWx1ZSgpLCBtX29sZFZhbHVlLCBtX25l
d1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtOTgsMTkg
KzEwNiw0NCBAQCB2b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVFbGVtZW50VXBn
cmFkZShFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZQogICAgICAgICBxdWV1ZS0+bV9pdGVt
cy5hcHBlbmQoTGlmZWN5Y2xlUXVldWVJdGVtKExpZmVjeWNsZVF1ZXVlSXRlbTo6VHlwZTo6RWxl
bWVudFVwZ3JhZGUsIGVsZW1lbnQsIGVsZW1lbnRJbnRlcmZhY2UpKTsKIH0KIAotdm9pZCBMaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrSWZOZWVk
ZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKK3N0YXRpYyBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGZpbmRJbnRlcmZhY2VGb3JDdXN0
b21FbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQuaXNDdXN0
b21FbGVtZW50KCkpOwogICAgIGF1dG8qIHdpbmRvdyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5kb21X
aW5kb3coKTsKICAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGF1dG8qIHJlZ2lzdHJ5ID0gd2luZG93LT5jdXN0b21FbGVtZW50
c1JlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gcmVnaXN0cnktPmZpbmRJbnRlcmZhY2UoZWxlbWVudC50YWdRTmFtZSgp
KTsKK30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQ29ubmVjdGVkQ2Fs
bGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8qIGVsZW1lbnRJbnRl
cmZhY2UgPSBmaW5kSW50ZXJmYWNlRm9yQ3VzdG9tRWxlbWVudChlbGVtZW50KTsKKyAgICBpZiAo
IWVsZW1lbnRJbnRlcmZhY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGVsZW1lbnRJ
bnRlcmZhY2UgPSByZWdpc3RyeS0+ZmluZEludGVyZmFjZShlbGVtZW50LnRhZ1FOYW1lKCkpOwot
ICAgIGlmICghZWxlbWVudEludGVyZmFjZS0+b2JzZXJ2ZXNBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZS5sb2NhbE5hbWUoKSkpCisgICAgaWYgKGF1dG8qIHF1ZXVlID0gQ3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjazo6ZW5zdXJlQ3VycmVudFF1ZXVlKCkpCisgICAgICAgIHF1ZXVl
LT5tX2l0ZW1zLmFwcGVuZChMaWZlY3ljbGVRdWV1ZUl0ZW0oTGlmZWN5Y2xlUXVldWVJdGVtOjpU
eXBlOjpDb25uZWN0ZWQsIGVsZW1lbnQsICplbGVtZW50SW50ZXJmYWNlKSk7Cit9CisKK3ZvaWQg
TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZURpc2Nvbm5lY3RlZENhbGxiYWNrSWZOZWVk
ZWQoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmlu
ZEludGVyZmFjZUZvckN1c3RvbUVsZW1lbnQoZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50SW50
ZXJmYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcXVldWUgPSBDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUoKSkKKyAg
ICAgICAgcXVldWUtPm1faXRlbXMuYXBwZW5kKExpZmVjeWNsZVF1ZXVlSXRlbShMaWZlY3ljbGVR
dWV1ZUl0ZW06OlR5cGU6OkRpc2Nvbm5lY3RlZCwgZWxlbWVudCwgKmVsZW1lbnRJbnRlcmZhY2Up
KTsKK30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hh
bmdlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmlu
ZEludGVyZmFjZUZvckN1c3RvbUVsZW1lbnQoZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50SW50
ZXJmYWNlIHx8ICFlbGVtZW50SW50ZXJmYWNlLT5vYnNlcnZlc0F0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLmxvY2FsTmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHF1ZXVl
ID0gQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6ZW5zdXJlQ3VycmVudFF1
ZXVlKCkpCkBAIC0xMjcsNyArMTYwLDcgQEAgdm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjpp
bnZva2VBbGwoKQogCiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKiBDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUoKQogewotICAgIC8vIEZJWE1F
OiBUaGlzIGVhcmx5IGV4aXQgaW5kaWNhdGVzIGEgYnVnIHRoYXQgc29tZSBET00gQVBJIGlzIG1p
c3NpbmcgSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3MKKyAgICAvLyBGSVhN
RTogVGhpcyBlYXJseSBleGl0IGluZGljYXRlcyBhIGJ1ZyB0aGF0IHNvbWUgRE9NIEFQSSBpcyBt
aXNzaW5nIENFUmVhY3Rpb25zCiAgICAgaWYgKCFzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2spCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNh
bGxiYWNrUXVldWUuaAppbmRleCA3MzkyMDc3NDg4MzU0OTE4NzkyY2VkM2EzZmFhNzBmMWM1YTAx
YzVlLi44Y2I4YjgwNTA2ZDI1Mzg0YjQ5Zjg2ZGEwNzNmMzJjNjlkOWUxMDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAg
cHVibGljOgogICAgIH5MaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBlbnF1ZXVlRWxlbWVudFVwZ3JhZGUoRWxlbWVudCYsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSYpOworICAgIHN0YXRpYyB2b2lkIGVucXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKEVs
ZW1lbnQmKTsKKyAgICBzdGF0aWMgdm9pZCBlbnF1ZXVlRGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5l
ZWRlZChFbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRD
YWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CiAKICAg
ICB2b2lkIGludm9rZUFsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCmluZGV4IDg2M2Y2N2QwMDA3Nzk1MmI0
M2ViOGE4ZjFlOGM3ZDAzYWZjNGM0N2QuLmZiOTYxMjFlNDg0NGU5NGE3YjE3YzJmZWFiM2MyOGI5
MWZlMGI1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NywxMyArNTcsMTIgQEAKIAogICAgIFtPYmpD
TGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGlu
c2VydEJlZm9yZShbQ3VzdG9tUmV0dXJuXSBOb2RlIG5ld0NoaWxkLCBOb2RlPyByZWZDaGlsZCk7
CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIE5vZGUgcmVwbGFjZUNoaWxkKE5vZGUgbmV3Q2hpbGQsIFtDdXN0b21SZXR1cm5dIE5vZGUg
b2xkQ2hpbGQpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gTm9kZSByZW1vdmVDaGls
ZChbQ3VzdG9tUmV0dXJuXSBOb2RlIG9sZENoaWxkKTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNl
cHRpb25dIE5vZGUgYXBwZW5kQ2hpbGQoW0N1c3RvbVJldHVybl0gTm9kZSBuZXdDaGlsZCk7Cisg
ICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uLCBDRVJlYWN0aW9uc10gTm9kZSByZW1vdmVDaGls
ZChbQ3VzdG9tUmV0dXJuXSBOb2RlIG9sZENoaWxkKTsKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNl
cHRpb24sIENFUmVhY3Rpb25zXSBOb2RlIGFwcGVuZENoaWxkKFtDdXN0b21SZXR1cm5dIE5vZGUg
bmV3Q2hpbGQpOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhhc0NoaWxkTm9kZXMoKTsKIAot
ICAgIFtOZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVG
b3JCaW5kaW5ncywgSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdCi0gICAg
Tm9kZSBjbG9uZU5vZGUob3B0aW9uYWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOworICAgIFtOZXdP
YmplY3QsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5n
cywgQ0VSZWFjdGlvbnNdIE5vZGUgY2xvbmVOb2RlKG9wdGlvbmFsIGJvb2xlYW4gZGVlcCA9IGZh
bHNlKTsKIAogICAgIHZvaWQgICAgICAgICAgICAgICBub3JtYWxpemUoKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJk
OTA3NDE5YTE0YTE4MDJlNDc1Y2M0ZDEzNjQ5MGYyOTE1M2NlOGIuLjBjZmNiYzdjN2EwNjM5NzBk
NTI5MTEzM2Y2MDJmYTI0NDFhYjVmNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wOC0x
NyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYmFzaWMg
c3VwcG9ydCBmb3IgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgY2FsbGJhY2tzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXM0Mgc3R5bGUg
dGVzdGhhcm5lc3MuanMgdGVzdHMgZm9yIGNvbm5lY3RlZENhbGxiYWNrIGFuZCBkaXNjb25uZWN0
ZWRDYWxsYmFjay4KKworICAgICAgICBGb3VyIHRlc3QgY2FzZXMgYXJlIGZhaWxpbmcgZHVlIHRv
IGEgYnVnIGluIHdpbmRvdy1sZXNzIGRvY3VtZW50J3MgY3VzdG9tIGVsZW1lbnQgcmVnaXN0cnks
CisgICAgICAgIHdoaWNoIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZnV0dXJlIHBhdGNoLgorCisg
ICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvY29ubmVjdGVkLWNhbGxiYWNrcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2Nvbm5lY3RlZC1j
YWxsYmFja3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvZGlz
Y29ubmVjdGVkLWNhbGxiYWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3VzdG9tLWVsZW1lbnRzL2Rpc2Nvbm5lY3RlZC1jYWxsYmFja3MuaHRtbDogQWRkZWQuCisKIDIw
MTYtMDgtMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY3Vz
dG9tRWxlbWVudHMuZGVmaW5lIHNob3VsZCByZXRyaWV2ZSBsaWZlY3ljbGUgY2FsbGJhY2tzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9jb25uZWN0ZWQtY2Fs
bGJhY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Nv
bm5lY3RlZC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1MzdiNTczMTE0Njk2
YzQyZDc3MzI2MWFmNTJiYzgzNThjNGM0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9jb25uZWN0ZWQtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACisKK1BBU1MgSW5zZXJ0aW5nIGEgY3VzdG9tIGVsZW1lbnQgaW50byBh
IGRvY3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGNvbm5lY3RlZENhbGxiYWNrIAorUEFT
UyBJbnNlcnRpbmcgYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZGV0YWNoZWQgbm9kZSBtdXN0IG5v
dCBlbnF1ZXVlIGFuZCBpbnZva2UgY29ubmVjdGVkQ2FsbGJhY2sgCitGQUlMIEluc2VydGluZyBh
IGN1c3RvbSBlbGVtZW50IGludG8gYSB3aW5kb3ctbGVzcyBkb2N1bWVudCBtdXN0IGVucXVldWUg
YW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjayBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhz
IGRpZmZlciwgZXhwZWN0ZWQgMiBnb3QgMAorUEFTUyBJbnNlcnRpbmcgYW4gYW5jZXN0b3Igb2Yg
YSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2Ug
Y29ubmVjdGVkQ2FsbGJhY2sgCitGQUlMIEluc2VydGluZyBhbiBhbmNlc3RvciBvZiBjdXN0b20g
ZWxlbWVudCBpbnRvIGEgd2luZG93LWxlc3MgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBpbnZv
a2UgY29ubmVjdGVkQ2FsbGJhY2sgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIs
IGV4cGVjdGVkIDIgZ290IDAKK1BBU1MgSW5zZXJ0aW5nIGEgY3VzdG9tIGVsZW1lbnQgaW50byBh
IGNvbm5lY3RlZCBzaGFkb3cgdHJlZSBtdXN0IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRD
YWxsYmFjayAKK1BBU1MgSW5zZXJ0aW5nIHRoZSBzaGFkb3cgaG9zdCBvZiBhIHNoYWRvdyB0cmVl
IHdpdGggYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBp
bnZva2UgY29ubmVjdGVkQ2FsbGJhY2sgCitQQVNTIEluc2VydGluZyBhIGN1c3RvbSBlbGVtZW50
IGludG8gYSBkZXRhY2hlZCBzaGFkb3cgdHJlZSBtdXN0IG5vdCBlbnF1ZXVlIGFuZCBpbnZva2Ug
Y29ubmVjdGVkQ2FsbGJhY2sgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL2Nvbm5lY3RlZC1jYWxsYmFja3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL2Nvbm5lY3RlZC1jYWxsYmFja3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWE1YTky
ZDA4ZjdmY2NmN2JkZmZmZGJkZTI5ZjZhYzIxMDFlOGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvY29ubmVjdGVkLWNhbGxiYWNrcy5odG1sCkBA
IC0wLDAgKzEsMTA0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q3VzdG9tIEVsZW1lbnRzOiBjb25uZWN0ZWRDYWxsYmFjazwvdGl0bGU+Cis8bWV0YSBuYW1lPSJh
dXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3Jn
Ij4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iY29ubmVjdGVkQ2FsbGJhY2sgbXVzdCBi
ZSBlbnF1ZXVlZCB3aGVuZXZlciBjdXN0b20gZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9j
dW1lbnQiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2Vi
Y29tcG9uZW50cy9zcGVjL2N1c3RvbS8jZGZuLWNvbm5lY3RlZC1jYWxsYmFjayI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3Nz
Jz4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Zh
ciBjYWxscyA9IFtdOworY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQg
eworICAgIGNvbm5lY3RlZENhbGxiYWNrKCkgeyBjYWxscy5wdXNoKCdjb25uZWN0ZWQnLCB0aGlz
KTsgfQorICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkgeyBjYWxscy5wdXNoKCdkaXNjb25uZWN0
ZWQnLCB0aGlzKTsgfQorfQorY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVu
dCcsIE15Q3VzdG9tRWxlbWVudCk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0
YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisKKyAg
ICBjYWxscyA9IFtdOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOwor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsnY29ubmVjdGVkJywgaW5zdGFuY2VdKTsK
K30sICdJbnNlcnRpbmcgYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZG9jdW1lbnQgbXVzdCBlbnF1
ZXVlIGFuZCBpbnZva2UgY29ubmVjdGVkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7
CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVs
ZW1lbnQnKTsKKworICAgIGNhbGxzID0gW107CisgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChpbnN0YW5jZSk7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgW10pOworfSwgJ0luc2VydGluZyBhIGN1c3Rv
bSBlbGVtZW50IGludG8gYSBkZXRhY2hlZCBub2RlIG11c3Qgbm90IGVucXVldWUgYW5kIGludm9r
ZSBjb25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5z
dGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAg
IHZhciBkb2N1bWVudFdpdGhvdXRXaW5kb3cgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVIVE1MRG9jdW1lbnQoKTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1lbnRXaXRob3V0
V2luZG93LmJvZHkuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2FsbHMsIFsnY29ubmVjdGVkJywgaW5zdGFuY2VdKTsKK30sICdJbnNlcnRpbmcgYSBjdXN0
b20gZWxlbWVudCBpbnRvIGEgd2luZG93LWxlc3MgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBp
bnZva2UgY29ubmVjdGVkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsK
KyAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcGFy
ZW50LmFwcGVuZENoaWxkKGluc3RhbmNlKTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2Fs
bHMsIFsnY29ubmVjdGVkJywgaW5zdGFuY2VdKTsKK30sICdJbnNlcnRpbmcgYW4gYW5jZXN0b3Ig
b2YgYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBpbnZv
a2UgY29ubmVjdGVkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGlu
c3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAg
ICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcGFyZW50
LmFwcGVuZENoaWxkKGluc3RhbmNlKTsKKyAgICB2YXIgZG9jdW1lbnRXaXRob3V0V2luZG93ID0g
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCk7CisKKyAgICBjYWxs
cyA9IFtdOworICAgIGRvY3VtZW50V2l0aG91dFdpbmRvdy5ib2R5LmFwcGVuZENoaWxkKHBhcmVu
dCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0ZWQnLCBpbnN0YW5j
ZV0pOworfSwgJ0luc2VydGluZyBhbiBhbmNlc3RvciBvZiBjdXN0b20gZWxlbWVudCBpbnRvIGEg
d2luZG93LWxlc3MgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgY29ubmVjdGVkQ2Fs
bGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICB2YXIgaG9zdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5h
dHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChob3N0KTsKKworICAgIGNhbGxzID0gW107CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGls
ZChpbnN0YW5jZSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0ZWQn
LCBpbnN0YW5jZV0pOworfSwgJ0luc2VydGluZyBhIGN1c3RvbSBlbGVtZW50IGludG8gYSBjb25u
ZWN0ZWQgc2hhZG93IHRyZWUgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgY29ubmVjdGVkQ2FsbGJh
Y2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICB2YXIgaG9zdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRh
Y2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChp
bnN0YW5jZSk7CisKKyAgICBjYWxscyA9IFtdOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaG9zdCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0ZWQnLCBp
bnN0YW5jZV0pOworfSwgJ0luc2VydGluZyB0aGUgc2hhZG93IGhvc3Qgb2YgYSBzaGFkb3cgdHJl
ZSB3aXRoIGEgY3VzdG9tIGVsZW1lbnQgaW50byBhIGRvY3VtZW50IG11c3QgZW5xdWV1ZSBhbmQg
aW52b2tlIGNvbm5lY3RlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZh
ciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7
CisgICAgdmFyIGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIg
c2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworCisgICAg
Y2FsbHMgPSBbXTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGluc3RhbmNlKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbXSk7Cit9LCAnSW5zZXJ0aW5nIGEgY3VzdG9tIGVs
ZW1lbnQgaW50byBhIGRldGFjaGVkIHNoYWRvdyB0cmVlIG11c3Qgbm90IGVucXVldWUgYW5kIGlu
dm9rZSBjb25uZWN0ZWRDYWxsYmFjaycpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Rpc2Nvbm5lY3Rl
ZC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvZGlzY29ubmVjdGVkLWNhbGxiYWNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNhZmM1
NjVlODBiMzU3NjY5YjRhNzljNDNiM2QwMDNhY2E5ODc0MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Rpc2Nvbm5lY3RlZC1jYWxsYmFja3MtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKKworUEFTUyBSZW1vdmluZyBhIGN1c3RvbSBlbGVt
ZW50IGZyb20gYSBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRD
YWxsYmFjayAKK1BBU1MgUmVtb3ZpbmcgYSBjdXN0b20gZWxlbWVudCBmcm9tIGEgZGV0YWhlZCBu
b2RlIG11c3Qgbm90IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjayAKK0ZBSUwg
UmVtb3ZpbmcgYSBjdXN0b20gZWxlbWVudCBmcm9tIGEgd2luZG93LWxlc3MgZG9jdW1lbnQgbXVz
dCBlbnF1ZXVlIGFuZCBpbnZva2UgZGlzY29ubmVjdGVkQ2FsbGJhY2sgYXNzZXJ0X2FycmF5X2Vx
dWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDIgZ290IDAKK1BBU1MgUmVtb3ZpbmcgYW4g
YW5jZXN0b3Igb2YgYSBjdXN0b20gZWxlbWVudCBmcm9tIGEgZG9jdW1lbnQgbXVzdCBlbnF1ZXVl
IGFuZCBpbnZva2UgZGlzY29ubmVjdGVkQ2FsbGJhY2sgCitGQUlMIFJlbW92aW5nIGFuIGFuY2Vz
dG9yIG9mIGN1c3RvbSBlbGVtZW50IGZyb20gYSBhIHdpbmRvdy1sZXNzIGRvY3VtZW50IG11c3Qg
ZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrIGFzc2VydF9hcnJheV9lcXVh
bHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAyIGdvdCAwCitQQVNTIFJlbW92aW5nIGEgY3Vz
dG9tIGVsZW1lbnQgZnJvbSBhIGNvbm5lY3RlZCBzaGFkb3cgdHJlZSBtdXN0IGVucXVldWUgYW5k
IGludm9rZSBkaXNjb25uZWN0ZWRDYWxsYmFjayAKK1BBU1MgUmVtb3ZpbmcgdGhlIHNoYWRvdyBo
b3N0IG9mIGEgc2hhZG93IHRyZWUgd2l0aCBhIGN1c3RvbSBlbGVtZW50IGZyb20gYSBkb2N1bWVu
dCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRDYWxsYmFjayAKK1BBU1MgUmVt
b3ZpbmcgYSBjdXN0b20gZWxlbWVudCBmcm9tIGEgZGV0YWNoZWQgc2hhZG93IHRyZWUgbXVzdCBu
b3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kaXNjb25uZWN0ZWQtY2FsbGJhY2tz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kaXNjb25uZWN0ZWQtY2Fs
bGJhY2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIzNzVjMjVmZmM4Y2I2ZTM4OTdjZmZhMDQwNTZjMmZk
ZThjYjI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL2Rpc2Nvbm5lY3RlZC1jYWxsYmFja3MuaHRtbApAQCAtMCwwICsxLDExMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogZGlzY29u
bmVjdGVkQ2FsbGJhY2s8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3Vr
ZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9ImRpc2Nvbm5lY3RlZENhbGxiYWNrIG11c3QgYmUgZW5xdWV1ZWQgd2hlbmV2
ZXIgY3VzdG9tIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIGEgZG9jdW1lbnQiPgorPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1
c3RvbS8jZGZuLWNvbm5lY3RlZC1jYWxsYmFjayI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdzdHlsZXNoZWV0
JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBjYWxscyA9IFtdOworY2xh
c3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGNvbm5lY3RlZENh
bGxiYWNrKCkgeyBjYWxscy5wdXNoKCdjb25uZWN0ZWQnLCB0aGlzKTsgfQorICAgIGRpc2Nvbm5l
Y3RlZENhbGxiYWNrKCkgeyBjYWxscy5wdXNoKCdkaXNjb25uZWN0ZWQnLCB0aGlzKTsgfQorfQor
Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVu
dCk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpbnN0YW5jZSk7CisKKyAgICBjYWxscyA9IFtdOworICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoaW5zdGFuY2UpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsn
ZGlzY29ubmVjdGVkJywgaW5zdGFuY2VdKTsKK30sICdSZW1vdmluZyBhIGN1c3RvbSBlbGVtZW50
IGZyb20gYSBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRDYWxs
YmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIHZhciBwYXJlbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaW5z
dGFuY2UpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoaW5zdGFu
Y2UpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFtdKTsKK30sICdSZW1vdmluZyBh
IGN1c3RvbSBlbGVtZW50IGZyb20gYSBkZXRhaGVkIG5vZGUgbXVzdCBub3QgZW5xdWV1ZSBhbmQg
aW52b2tlIGNvbm5lY3RlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZh
ciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7
CisgICAgdmFyIGRvY3VtZW50V2l0aG91dFdpbmRvdyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9u
LmNyZWF0ZUhUTUxEb2N1bWVudCgpOworICAgIGRvY3VtZW50V2l0aG91dFdpbmRvdy5ib2R5LmFw
cGVuZENoaWxkKGluc3RhbmNlKTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1lbnRXaXRo
b3V0V2luZG93LmJvZHkucmVtb3ZlQ2hpbGQoaW5zdGFuY2UpOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2FsbHMsIFsnZGlzY29ubmVjdGVkJywgaW5zdGFuY2VdKTsKK30sICdSZW1vdmluZyBh
IGN1c3RvbSBlbGVtZW50IGZyb20gYSB3aW5kb3ctbGVzcyBkb2N1bWVudCBtdXN0IGVucXVldWUg
YW5kIGludm9rZSBkaXNjb25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxl
bWVudCcpOworICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQocGFyZW50KTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChwYXJlbnQpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsnZGlz
Y29ubmVjdGVkJywgaW5zdGFuY2VdKTsKK30sICdSZW1vdmluZyBhbiBhbmNlc3RvciBvZiBhIGN1
c3RvbSBlbGVtZW50IGZyb20gYSBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNj
b25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFu
Y2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIHZh
ciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBwYXJlbnQuYXBw
ZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgIHZhciBkb2N1bWVudFdpdGhvdXRXaW5kb3cgPSBkb2N1
bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKKyAgICBkb2N1bWVudFdp
dGhvdXRXaW5kb3cuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworCisgICAgY2FsbHMgPSBbXTsK
KyAgICBkb2N1bWVudFdpdGhvdXRXaW5kb3cuYm9keS5yZW1vdmVDaGlsZChwYXJlbnQpOworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsnZGlzY29ubmVjdGVkJywgaW5zdGFuY2VdKTsK
K30sICdSZW1vdmluZyBhbiBhbmNlc3RvciBvZiBjdXN0b20gZWxlbWVudCBmcm9tIGEgYSB3aW5k
b3ctbGVzcyBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRDYWxs
YmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIHZhciBob3N0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChob3N0KTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAn
Y2xvc2VkJ30pOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworCisgICAg
Y2FsbHMgPSBbXTsKKyAgICBzaGFkb3dSb290LnJlbW92ZUNoaWxkKGluc3RhbmNlKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ2Rpc2Nvbm5lY3RlZCcsIGluc3RhbmNlXSk7Cit9
LCAnUmVtb3ZpbmcgYSBjdXN0b20gZWxlbWVudCBmcm9tIGEgY29ubmVjdGVkIHNoYWRvdyB0cmVl
IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgdmFyIGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2Rl
OiAnY2xvc2VkJ30pOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7CisKKyAgICBjYWxscyA9IFtdOworICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaG9zdCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhjYWxscywgWydkaXNjb25uZWN0ZWQnLCBpbnN0YW5jZV0pOworfSwgJ1JlbW92aW5nIHRoZSBz
aGFkb3cgaG9zdCBvZiBhIHNoYWRvdyB0cmVlIHdpdGggYSBjdXN0b20gZWxlbWVudCBmcm9tIGEg
ZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgZGlzY29ubmVjdGVkQ2FsbGJhY2snKTsK
KwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFk
b3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChpbnN0YW5j
ZSk7CisKKyAgICBjYWxscyA9IFtdOworICAgIHNoYWRvd1Jvb3QucmVtb3ZlQ2hpbGQoaW5zdGFu
Y2UpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFtdKTsKK30sICdSZW1vdmluZyBh
IGN1c3RvbSBlbGVtZW50IGZyb20gYSBkZXRhY2hlZCBzaGFkb3cgdHJlZSBtdXN0IG5vdCBlbnF1
ZXVlIGFuZCBpbnZva2UgZGlzY29ubmVjdGVkQ2FsbGJhY2snKTsKKworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286344</attachid>
            <date>2016-08-17 17:02:32 -0700</date>
            <delta_ts>2016-08-18 13:31:17 -0700</delta_ts>
            <desc>Fixed GTK+/EFL builds</desc>
            <filename>bug-160950-20160817170044.patch</filename>
            <type>text/plain</type>
            <size>36599</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE2LTA4LTE3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZv
ciBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBjYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk1MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRoZSBiYXNpYyBzdXBwb3J0IGZv
ciBjdXN0b20gZWxlbWVudHMnIGNvbm5lY3RlZENhbGxiYWNrIGFuZCBkaXNjb25uZWN0ZWRDYWxs
YmFjay4gVGhlc2UgY2FsbGJhY2tzCisgICAgICAgIGFyZSBlbnF1ZXVlZCBieSBpbnNlcnRpbmcg
YW5kIHJlbW92aW5nIGEgbm9kZSBhcyBzcGVjJ2VkIGJ5IGh0dHBzOi8vZG9tLnNwZWMud2hhdHdn
Lm9yZy8jY29uY2VwdC1ub2RlLWluc2VydAorICAgICAgICBhbmQgaHR0cHM6Ly9kb20uc3BlYy53
aGF0d2cub3JnLyNjb25jZXB0LW5vZGUtcmVtb3ZlCisKKyAgICAgICAgRm9yIG5vdywgd2Ugb25s
eSBzdXBwb3J0IGNhbGxiYWNrcyBvbiBhcHBlbmRDaGlsZCBhbmQgcmVtb3ZlQ2hpbGQgdG8gbGlt
aXQgdGhlIGFtb3VudCBvZiBjb2RlIGNoYW5nZXMgYW5kCisgICAgICAgIHRlc3RzIHRoYXQgbmVl
ZCB0byBiZSBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW5hbWVzIEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJhY2tzIElETCBhdHRy
aWJ1dGUgdG8gQ0VSZWFjdGlvbnMgdG8gbWF0Y2gKKyAgICAgICAgdGhlIGxhdGVzdCBzcGVjaWZp
Y2F0aW9uOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcu
aHRtbCNjZXJlYWN0aW9ucworCisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy9j
b25uZWN0ZWQtY2FsbGJhY2tzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1l
bnRzL2Rpc2Nvbm5lY3RlZC1jYWxsYmFja3MuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZTo6aW52b2tlQ2FsbGJhY2spOiBFeHRyYWN0ZWQgZnJvbSBpbnZva2VB
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2U6OnNldENvbm5lY3RlZENhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNvbm5lY3RlZENhbGxiYWNrKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnNldERp
c2Nvbm5lY3RlZENhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2U6Omludm9rZURpc2Nvbm5lY3RlZENhbGxiYWNrKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnNldEF0dHJpYnV0ZUNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
Omludm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayk6IFJlbmFtZWQgZnJvbSBhdHRyaWJ1dGVD
aGFuZ2VkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5o
OiBBZGRlZCBtX2Nvbm5lY3RlZENhbGxiYWNrIGFuZCBtX2Rpc2Nvbm5lY3RlZENhbGxiYWNrIGFz
IGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcy4gQWxzbyByZW1vdmVkIHRoZSBzdXBlcmZsdW91
cyBtdXRhYmxlIHF1YWxpZmllciBmcm9tIG1fY29uc3RydWN0b3IgbV9hdHRyaWJ1dGVDaGFuZ2Vk
Q2FsbGJhY2suCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeTo6
ZGVmaW5lKTogU3RvcmUgY29ubmVjdGVkQ2FsbGJhY2sgYW5kIGRpc2Nvbm5lY3RlZENhbGxiYWNr
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9J
RExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5p
ZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKTogQ2FsbCBlbnF1ZXVlQ29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tKTogQ2FsbCBlbnF1ZXVlRGlz
Y29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6Cisg
ICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjppbnZva2UpOiBBZGRlZCBjYWxscyB0byBpbnZva2VDb25u
ZWN0ZWRDYWxsYmFjayBhbmQgaW52b2tlRGlzY29ubmVjdGVkQ2FsbGJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpmaW5kSW50ZXJmYWNlRm9yQ3VzdG9tRWxlbWVudCk6IEV4dHJhY3RlZCBmcm9tIGVu
cXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tJZk5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVk
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1
ZXVlRGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFj
a0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0xpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisKIDIwMTYtMDgtMTcg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
YSBjb3VwbGUgb2YgdW51c2VkIFdLU0kgZnVuY3Rpb24gcG9pbnRlcnMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcAkocmV2aXNpb24gMjA0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDI3ICsxNTEs
MjAgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbAogICAgIEFTU0VS
VCh3cmFwcGVkRWxlbWVudC0+aXNDdXN0b21FbGVtZW50KCkpOwogfQogCi12b2lkIEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZTo6c2V0QXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEpTQzo6SlNPYmpl
Y3QqIGNhbGxiYWNrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JzZXJ2ZWRBdHRyaWJ1dGVzKQot
ewotICAgIG1fYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgbV9vYnNl
cnZlZEF0dHJpYnV0ZXMuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBvYnNlcnZlZEF0
dHJpYnV0ZXMpCi0gICAgICAgIG1fb2JzZXJ2ZWRBdHRyaWJ1dGVzLmFkZChuYW1lKTsKLX0KLQot
dm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3RlbXBsYXRl
IDx0eXBlbmFtZSBBcmd1bWVudEFkZGVyPgordm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
Omludm9rZUNhbGxiYWNrKEVsZW1lbnQmIGVsZW1lbnQsIEpTT2JqZWN0KiBjYWxsYmFjaywgQXJn
dW1lbnRBZGRlciBhcmd1ZW1lbnRBZGRlcikKIHsKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRl
ZFdvcmxkLT52bSgpKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAorICAg
IFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisKKyAgICBBU1NFUlQo
Y29udGV4dCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwg
Km1faXNvbGF0ZWRXb3JsZCk7CiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpOwpAQCAtMTc5LDI3ICsxNzIsNjIgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6OmF0dHJpYnV0ZQogICAgIEpTT2JqZWN0KiBqc0VsZW1lbnQgPSBhc09iamVjdCh0
b0pTKHN0YXRlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpKTsKIAogICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gbV9hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2st
Pm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrLmdl
dCgpLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjay0+bWV0aG9k
VGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkkgPSBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpOwogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKLSAgICBhcmdzLmFwcGVuZChvbGRWYWx1ZSA9
PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG9sZFZhbHVl
KSk7Ci0gICAgYXJncy5hcHBlbmQobmV3VmFsdWUgPT0gbnVsbEF0b20gPyBqc051bGwoKSA6IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBuZXdWYWx1ZSkpOwotICAgIGFyZ3MuYXBwZW5kKG5hbWVz
cGFjZVVSSSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpKTsKKyAgICBhcmd1ZW1lbnRBZGRlcihzdGF0
ZSwgYXJncyk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0g
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNh
bGxUeXBlLCBjYWxsRGF0YSk7CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsK
LSAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoc3RhdGUsIG1fYXR0cmlidXRlQ2hhbmdl
ZENhbGxiYWNrLmdldCgpLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRWxlbWVudCwgYXJncywgZXhj
ZXB0aW9uKTsKKyAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoc3RhdGUsIGNhbGxiYWNr
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRWxlbWVudCwgYXJncywgZXhjZXB0aW9uKTsKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4
dCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUs
IGV4Y2VwdGlvbik7CiB9Ci0gICAgCisKK3ZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpz
ZXRDb25uZWN0ZWRDYWxsYmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaykKK3sKKyAgICBtX2Nv
bm5lY3RlZENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK3ZvaWQgSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjppbnZva2VDb25uZWN0ZWRDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50KQoreworICAg
IGludm9rZUNhbGxiYWNrKGVsZW1lbnQsIG1fY29ubmVjdGVkQ2FsbGJhY2suZ2V0KCksIFsmXShF
eGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpIHsgfSk7Cit9CisKK3ZvaWQgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjpzZXREaXNjb25uZWN0ZWRDYWxsYmFjayhKU0M6OkpTT2JqZWN0
KiBjYWxsYmFjaykKK3sKKyAgICBtX2Rpc2Nvbm5lY3RlZENhbGxiYWNrID0gY2FsbGJhY2s7Cit9
CisKK3ZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VEaXNjb25uZWN0ZWRDYWxs
YmFjayhFbGVtZW50JiBlbGVtZW50KQoreworICAgIGludm9rZUNhbGxiYWNrKGVsZW1lbnQsIG1f
ZGlzY29ubmVjdGVkQ2FsbGJhY2suZ2V0KCksIFsmXShFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciYpIHsgfSk7Cit9CisKK3ZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpzZXRB
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvYnNlcnZlZEF0dHJpYnV0ZXMpCit7CisgICAgbV9hdHRyaWJ1dGVDaGFu
Z2VkQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBtX29ic2VydmVkQXR0cmlidXRlcy5jbGVhcigp
OworICAgIGZvciAoYXV0byYgbmFtZSA6IG9ic2VydmVkQXR0cmlidXRlcykKKyAgICAgICAgbV9v
YnNlcnZlZEF0dHJpYnV0ZXMuYWRkKG5hbWUpOworfQorCit2b2lkIEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZTo6aW52b2tlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaW52b2tlQ2Fs
bGJhY2soZWxlbWVudCwgbV9hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2suZ2V0KCksIFsmXShFeGVj
U3RhdGUqIHN0YXRlLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncykgeworICAgICAgICBhcmdz
LmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUo
KSkpOworICAgICAgICBhcmdzLmFwcGVuZChvbGRWYWx1ZSA9PSBudWxsQXRvbSA/IGpzTnVsbCgp
IDoganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG9sZFZhbHVlKSk7CisgICAgICAgIGFyZ3MuYXBw
ZW5kKG5ld1ZhbHVlID09IG51bGxBdG9tID8ganNOdWxsKCkgOiBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgbmV3VmFsdWUpKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkgPSBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpOworICAgICAgICBhcmdzLmFwcGVuZChu
YW1lc3BhY2VVUkkgPT0gbnVsbEF0b20gPyBqc051bGwoKSA6IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSk7CisgICAgfSk7Cit9CisKIHZvaWQg
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVj
dGlvblN0YWNrKCkKIHsKICAgICBtX2NvbnN0cnVjdGlvblN0YWNrLmxhc3QoKSA9IG51bGxwdHI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuaAkocmV2aXNpb24gMjA0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDkgKzY2LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBncmFkZUVsZW1lbnQoRWxlbWVudCYp
OwogCisgICAgdm9pZCBzZXRDb25uZWN0ZWRDYWxsYmFjayhKU0M6OkpTT2JqZWN0Kik7CisgICAg
dm9pZCBpbnZva2VDb25uZWN0ZWRDYWxsYmFjayhFbGVtZW50Jik7CisKKyAgICB2b2lkIHNldERp
c2Nvbm5lY3RlZENhbGxiYWNrKEpTQzo6SlNPYmplY3QqKTsKKyAgICB2b2lkIGludm9rZURpc2Nv
bm5lY3RlZENhbGxiYWNrKEVsZW1lbnQmKTsKKwogICAgIHZvaWQgc2V0QXR0cmlidXRlQ2hhbmdl
ZENhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JzZXJ2ZWRBdHRyaWJ1dGVzKTsKICAgICBib29sIG9ic2VydmVzQXR0cmlidXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9vYnNlcnZlZEF0dHJpYnV0ZXMuY29u
dGFpbnMobmFtZSk7IH0KLSAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYsIGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlKTsKKyAgICB2b2lkIGludm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayhFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOwogCiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAg
ICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fY29uc3RydWN0b3IuZ2V0
KCk7IH0KQEAgLTg0LDkgKzkwLDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBKU0M6OkpTT2JqZWN0KiBjYWxs
YmFjaywgSlNET01HbG9iYWxPYmplY3QqKTsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmd1
bWVudEFkZGVyPiB2b2lkIGludm9rZUNhbGxiYWNrKEVsZW1lbnQmLCBKU0M6OkpTT2JqZWN0Kiwg
QXJndW1lbnRBZGRlcik7CisKICAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsKLSAgICBtdXRhYmxl
IEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2NvbnN0cnVjdG9yOwotICAgIG11dGFibGUgSlND
OjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrOworICAgIEpT
Qzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2NvbnN0cnVjdG9yOworICAgIEpTQzo6V2VhazxKU0M6
OkpTT2JqZWN0PiBtX2Nvbm5lY3RlZENhbGxiYWNrOworICAgIEpTQzo6V2VhazxKU0M6OkpTT2Jq
ZWN0PiBtX2Rpc2Nvbm5lY3RlZENhbGxiYWNrOworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiBtX2F0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjazsKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxk
PiBtX2lzb2xhdGVkV29ybGQ7CiAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiwgMT4gbV9jb25z
dHJ1Y3Rpb25TdGFjazsKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gbV9vYnNlcnZlZEF0dHJp
YnV0ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRz
UmVnaXN0cnlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDU3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwyNCArMTA0LDI2IEBAIEpTVmFsdWUgSlND
dXN0b21FbGVtZW50c1JlZ2lzdHJ5OjpkZWZpbmUKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcidzIHBy
b3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCIpKTsKICAgICBKU09iamVjdCYgcHJvdG90eXBlT2Jq
ZWN0ID0gKmFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKTsKIAotICAgIC8vIEZJWE1FOiBBZGQgdGhl
IHN1cHBvcnQgZm9yIGNvbm5lY3RlZENhbGxiYWNrLgotICAgIGdldExpZmVjeWNsZUNhbGxiYWNr
KHN0YXRlLCBwcm90b3R5cGVPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29u
bmVjdGVkQ2FsbGJhY2siKSk7CisgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2Nh
bE5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOworICAgIGF1dG8gZWxlbWVudElu
dGVyZmFjZSA9IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y3JlYXRlKG5hbWUsIGNvbnN0cnVj
dG9yLCBnbG9iYWxPYmplY3QoKSk7CisKKyAgICBhdXRvKiBjb25uZWN0ZWRDYWxsYmFjayA9IGdl
dExpZmVjeWNsZUNhbGxiYWNrKHN0YXRlLCBwcm90b3R5cGVPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiY29ubmVjdGVkQ2FsbGJhY2siKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoY29ubmVj
dGVkQ2FsbGJhY2spCisgICAgICAgIGVsZW1lbnRJbnRlcmZhY2UtPnNldENvbm5lY3RlZENhbGxi
YWNrKGNvbm5lY3RlZENhbGxiYWNrKTsKIAotICAgIC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQg
Zm9yIGRpc2Nvbm5lY3RlZENhbGxiYWNrLgotICAgIGdldExpZmVjeWNsZUNhbGxiYWNrKHN0YXRl
LCBwcm90b3R5cGVPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZGlzY29ubmVj
dGVkQ2FsbGJhY2siKSk7CisgICAgYXV0byogZGlzY29ubmVjdGVkQ2FsbGJhY2sgPSBnZXRMaWZl
Y3ljbGVDYWxsYmFjayhzdGF0ZSwgcHJvdG90eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImRpc2Nvbm5lY3RlZENhbGxiYWNrIikpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKGRpc2Nvbm5l
Y3RlZENhbGxiYWNrKQorICAgICAgICBlbGVtZW50SW50ZXJmYWNlLT5zZXREaXNjb25uZWN0ZWRD
YWxsYmFjayhkaXNjb25uZWN0ZWRDYWxsYmFjayk7CiAKICAgICAvLyBGSVhNRTogQWRkIHRoZSBz
dXBwb3J0IGZvciBhZG9wdGVkQ2FsbGJhY2suCiAgICAgZ2V0TGlmZWN5Y2xlQ2FsbGJhY2soc3Rh
dGUsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhZG9wdGVk
Q2FsbGJhY2siKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAotICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgbG9j
YWxOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKLSAgICBhdXRvIGVsZW1lbnRJ
bnRlcmZhY2UgPSBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNyZWF0ZShuYW1lLCBjb25zdHJ1
Y3RvciwgZ2xvYmFsT2JqZWN0KCkpOwotCiAgICAgYXV0byogYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrID0gZ2V0TGlmZWN5Y2xlQ2FsbGJhY2soc3RhdGUsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siKSk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCShyZXZpc2lvbiAyMDQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzMzNSw3ICszMzM1
LDcgQEAgRU5ECiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+
In0gPSAxOwogCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrcyJ9KSB7
CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDRVJlYWN0aW9ucyJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUylcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sg
Y3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaztcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2aXNpb24gMjA0
NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBKU0xlZ2FjeVBhcmVudD0qCiBMZW5p
ZW50VGhpcwogTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogTmFtZWRDb25zdHJ1Y3Rvcj0qCi1JbnZv
a2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrcworQ0VSZWFjdGlvbnMKIE5ld0ltcHVy
ZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cwogTmV3T2JqZWN0CiBOb0ludGVyZmFjZU9iamVjdApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmlkbAko
cmV2aXNpb24gMjA0NTc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVn
aXN0cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw2IEBACiAgICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeSB7CiAK
LSAgICBbSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3MsIEN1c3RvbV0gdm9p
ZCBkZWZpbmUoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsKKyAgICBbQ0VS
ZWFjdGlvbnMsIEN1c3RvbV0gdm9pZCBkZWZpbmUoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIGNv
bnN0cnVjdG9yKTsKIAogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU3OSw2ICsxNTc5LDExIEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
RWxlbWUKICAgICAgICAgICAgIHVwZGF0ZUxhYmVsKCpuZXdTY29wZSwgbnVsbEF0b20sIGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cikpOwogICAgIH0KIAorI2lmIEVOQUJM
RShDVVNUT01fRUxFTUVOVFMpCisgICAgaWYgKG5ld0RvY3VtZW50ICYmIFVOTElLRUxZKGlzQ3Vz
dG9tRWxlbWVudCgpKSkKKyAgICAgICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUNv
bm5lY3RlZENhbGxiYWNrSWZOZWVkZWQoKnRoaXMpOworI2VuZGlmCisKICAgICByZXR1cm4gSW5z
ZXJ0aW9uRG9uZTsKIH0KIApAQCAtMTYyNCw2ICsxNjI5LDExIEBAIHZvaWQgRWxlbWVudDo6cmVt
b3ZlZEZyb20oQ29udGFpbmVyTm9kZSYKICAgICAgICAgICAgIGlmIChvbGRTY29wZS0+c2hvdWxk
Q2FjaGVMYWJlbHNCeUZvckF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUxhYmVs
KCpvbGRTY29wZSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKSwgbnVs
bEF0b20pOwogICAgICAgICB9CisKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICAg
ICBpZiAob2xkRG9jdW1lbnQgJiYgVU5MSUtFTFkoaXNDdXN0b21FbGVtZW50KCkpKQorICAgICAg
ICAgICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZURpc2Nvbm5lY3RlZENhbGxiYWNr
SWZOZWVkZWQoKnRoaXMpOworI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKCFwYXJlbnROb2RlKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDIwNDU3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDEz
IEBACiAKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiAKLSAg
ICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb24sIEludm9rZXND
dXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJhY2tzXQorICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBh
cmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgQ0VSZWFjdGlvbnNdIHZvaWQgc2V0QXR0cmlidXRl
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwogCi0gICAgdm9pZCBzZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0KLSAgICBbSW52b2tlc0N1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmlu
ZyBuYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmlu
ZyBuYW1lKTsKICAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsKIAot
ICAgIFtSYWlzZXNFeGNlcHRpb24sIEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJh
Y2tzXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0dHIgbmV3QXR0cik7Ci0gICAgW1JhaXNlc0V4
Y2VwdGlvbiwgSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdIEF0dHIgcmVt
b3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIENF
UmVhY3Rpb25zXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0dHIgbmV3QXR0cik7CisgICAgW1Jh
aXNlc0V4Y2VwdGlvbiwgQ0VSZWFjdGlvbnNdIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRy
IG9sZEF0dHIpOwogCiAgICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9N
U3RyaW5nIG5hbWUpOwogCkBAIC01MCwxNiArNDgsMTQgQEAKIAogICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnNdIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCi0gICAgW09iakNMZWdhY3lVbm5hbWVk
UGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZUNhbGxiYWNrc10KLQotICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3Bh
Y2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOworICAgIFtP
YmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgQ0VSZWFjdGlvbnNd
IHZvaWQgc2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwogCi0gICAgW09iakNMZWdhY3lVbm5hbWVk
UGFyYW1ldGVycywgSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdIHZvaWQg
cmVtb3ZlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2Nh
bE5hbWUpOworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIENFUmVhY3Rpb25zXSB2
b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcg
bG9jYWxOYW1lKTsKIAogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMo
RE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCiAgICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gQXR0cj8gZ2V0QXR0cmlidXRlTm9kZU5TKERPTVN0
cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uLCBJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrc10gQXR0cj8gc2V0
QXR0cmlidXRlTm9kZU5TKEF0dHIgbmV3QXR0cik7CisgICAgW1JhaXNlc0V4Y2VwdGlvbiwgQ0VS
ZWFjdGlvbnNdIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyIG5ld0F0dHIpOwogICAgIGJv
b2xlYW4gaGFzQXR0cmlidXRlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnNdIGJvb2xlYW4gaGFzQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3Bh
Y2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xp
ZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcAkocmV2aXNpb24gMjA0NTc4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw4IEBAIGNsYXNzIExpZmVjeWNsZVF1ZXVlSXRlbSB7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAgRWxlbWVudFVwZ3JhZGUsCisgICAgICAgIENvbm5l
Y3RlZCwKKyAgICAgICAgRGlzY29ubmVjdGVkLAogICAgICAgICBBdHRyaWJ1dGVDaGFuZ2VkLAog
ICAgIH07CiAKQEAgLTY4LDkgKzcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBUeXBlOjpF
bGVtZW50VXBncmFkZToKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT51cGdyYWRlRWxlbWVudCht
X2VsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6
Q29ubmVjdGVkOgorICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmludm9rZUNvbm5lY3RlZENhbGxi
YWNrKG1fZWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
eXBlOjpEaXNjb25uZWN0ZWQ6CisgICAgICAgICAgICBtX2ludGVyZmFjZS0+aW52b2tlRGlzY29u
bmVjdGVkQ2FsbGJhY2sobV9lbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFR5cGU6OkF0dHJpYnV0ZUNoYW5nZWQ6CiAgICAgICAgICAgICBBU1NFUlQobV9h
dHRyaWJ1dGVOYW1lKTsKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2Vk
KG1fZWxlbWVudC5nZXQoKSwgbV9hdHRyaWJ1dGVOYW1lLnZhbHVlKCksIG1fb2xkVmFsdWUsIG1f
bmV3VmFsdWUpOworICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmludm9rZUF0dHJpYnV0ZUNoYW5n
ZWRDYWxsYmFjayhtX2VsZW1lbnQuZ2V0KCksIG1fYXR0cmlidXRlTmFtZS52YWx1ZSgpLCBtX29s
ZFZhbHVlLCBtX25ld1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQpAQCAtOTgsMTkgKzEwNiw0NCBAQCB2b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVl
dWVFbGVtCiAgICAgICAgIHF1ZXVlLT5tX2l0ZW1zLmFwcGVuZChMaWZlY3ljbGVRdWV1ZUl0ZW0o
TGlmZWN5Y2xlUXVldWVJdGVtOjpUeXBlOjpFbGVtZW50VXBncmFkZSwgZWxlbWVudCwgZWxlbWVu
dEludGVyZmFjZSkpOwogfQogCi12b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVB
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorc3RhdGljIEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZSogZmluZEludGVyZmFjZUZvckN1c3RvbUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBBU1NFUlQoZWxlbWVudC5pc0N1c3RvbUVsZW1lbnQoKSk7CiAgICAgYXV0byogd2lu
ZG93ID0gZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogICAgIGlmICghd2luZG93KQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byogcmVn
aXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRzUmVnaXN0cnkoKTsKICAgICBpZiAoIXJlZ2lz
dHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiByZWdpc3RyeS0+Zmlu
ZEludGVyZmFjZShlbGVtZW50LnRhZ1FOYW1lKCkpOworfQorCit2b2lkIExpZmVjeWNsZUNhbGxi
YWNrUXVldWU6OmVucXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgYXV0byogZWxlbWVudEludGVyZmFjZSA9IGZpbmRJbnRlcmZhY2VGb3JDdXN0
b21FbGVtZW50KGVsZW1lbnQpOworICAgIGlmICghZWxlbWVudEludGVyZmFjZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50
ZXJmYWNlKGVsZW1lbnQudGFnUU5hbWUoKSk7Ci0gICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5v
YnNlcnZlc0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSkKKyAgICBpZiAoYXV0
byogcXVldWUgPSBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVD
dXJyZW50UXVldWUoKSkKKyAgICAgICAgcXVldWUtPm1faXRlbXMuYXBwZW5kKExpZmVjeWNsZVF1
ZXVlSXRlbShMaWZlY3ljbGVRdWV1ZUl0ZW06OlR5cGU6OkNvbm5lY3RlZCwgZWxlbWVudCwgKmVs
ZW1lbnRJbnRlcmZhY2UpKTsKK30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1
ZXVlRGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50KQoreworICAg
IGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSBmaW5kSW50ZXJmYWNlRm9yQ3VzdG9tRWxlbWVudChl
bGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnRJbnRlcmZhY2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChhdXRvKiBxdWV1ZSA9IEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3Rh
Y2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpKQorICAgICAgICBxdWV1ZS0+bV9pdGVtcy5hcHBlbmQo
TGlmZWN5Y2xlUXVldWVJdGVtKExpZmVjeWNsZVF1ZXVlSXRlbTo6VHlwZTo6RGlzY29ubmVjdGVk
LCBlbGVtZW50LCAqZWxlbWVudEludGVyZmFjZSkpOworfQorCit2b2lkIExpZmVjeWNsZUNhbGxi
YWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAg
IGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSBmaW5kSW50ZXJmYWNlRm9yQ3VzdG9tRWxlbWVudChl
bGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnRJbnRlcmZhY2UgfHwgIWVsZW1lbnRJbnRlcmZhY2Ut
Pm9ic2VydmVzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoYXV0byogcXVldWUgPSBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJv
Y2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUoKSkKQEAgLTEyNyw3ICsxNjAsNyBAQCB2
b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6Omludm9rZUFsbCgpCiAKIExpZmVjeWNsZUNhbGxi
YWNrUXVldWUqIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1
cnJlbnRRdWV1ZSgpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZWFybHkgZXhpdCBpbmRpY2F0ZXMg
YSBidWcgdGhhdCBzb21lIERPTSBBUEkgaXMgbWlzc2luZyBJbnZva2VzQ3VzdG9tRWxlbWVudExp
ZmVjeWNsZUNhbGxiYWNrcworICAgIC8vIEZJWE1FOiBUaGlzIGVhcmx5IGV4aXQgaW5kaWNhdGVz
IGEgYnVnIHRoYXQgc29tZSBET00gQVBJIGlzIG1pc3NpbmcgQ0VSZWFjdGlvbnMKICAgICBpZiAo
IXNfY3VycmVudFByb2Nlc3NpbmdTdGFjaykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaAkocmV2aXNp
b24gMjA0NTc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgfkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUoKTsKIAogICAgIHN0YXRpYyB2b2lkIGVucXVldWVFbGVtZW50VXBncmFk
ZShFbGVtZW50JiwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJik7CisgICAgc3RhdGljIHZvaWQg
ZW5xdWV1ZUNvbm5lY3RlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCYpOworICAgIHN0YXRpYyB2
b2lkIGVucXVldWVEaXNjb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmKTsKICAgICBz
dGF0aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVu
dCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKIAogICAgIHZvaWQgaW52b2tlQWxsKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiAyMDQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NywxMyArNTcsMTIgQEAKIAogICAgIFtPYmpD
TGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGlu
c2VydEJlZm9yZShbQ3VzdG9tUmV0dXJuXSBOb2RlIG5ld0NoaWxkLCBOb2RlPyByZWZDaGlsZCk7
CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIE5vZGUgcmVwbGFjZUNoaWxkKE5vZGUgbmV3Q2hpbGQsIFtDdXN0b21SZXR1cm5dIE5vZGUg
b2xkQ2hpbGQpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gTm9kZSByZW1vdmVDaGls
ZChbQ3VzdG9tUmV0dXJuXSBOb2RlIG9sZENoaWxkKTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNl
cHRpb25dIE5vZGUgYXBwZW5kQ2hpbGQoW0N1c3RvbVJldHVybl0gTm9kZSBuZXdDaGlsZCk7Cisg
ICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uLCBDRVJlYWN0aW9uc10gTm9kZSByZW1vdmVDaGls
ZChbQ3VzdG9tUmV0dXJuXSBOb2RlIG9sZENoaWxkKTsKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNl
cHRpb24sIENFUmVhY3Rpb25zXSBOb2RlIGFwcGVuZENoaWxkKFtDdXN0b21SZXR1cm5dIE5vZGUg
bmV3Q2hpbGQpOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhhc0NoaWxkTm9kZXMoKTsKIAot
ICAgIFtOZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVG
b3JCaW5kaW5ncywgSW52b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdCi0gICAg
Tm9kZSBjbG9uZU5vZGUob3B0aW9uYWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOworICAgIFtOZXdP
YmplY3QsIFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5n
cywgQ0VSZWFjdGlvbnNdIE5vZGUgY2xvbmVOb2RlKG9wdGlvbmFsIGJvb2xlYW4gZGVlcCA9IGZh
bHNlKTsKIAogICAgIHZvaWQgICAgICAgICAgICAgICBub3JtYWxpemUoKTsKIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA0NTc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDgtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGNvbm5lY3RlZCBhbmQgZGlz
Y29ubmVjdGVkIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwOTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgVzNDIHN0eWxlIHRlc3RoYXJuZXNzLmpzIHRlc3RzIGZvciBjb25u
ZWN0ZWRDYWxsYmFjayBhbmQgZGlzY29ubmVjdGVkQ2FsbGJhY2suCisKKyAgICAgICAgRm91ciB0
ZXN0IGNhc2VzIGFyZSBmYWlsaW5nIGR1ZSB0byBhIGJ1ZyBpbiB3aW5kb3ctbGVzcyBkb2N1bWVu
dCdzIGN1c3RvbSBlbGVtZW50IHJlZ2lzdHJ5LAorICAgICAgICB3aGljaCB3aWxsIGJlIGFkZHJl
c3NlZCBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRz
L2Nvbm5lY3RlZC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2N1c3RvbS1lbGVtZW50cy9jb25uZWN0ZWQtY2FsbGJhY2tzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2Rpc2Nvbm5lY3RlZC1jYWxsYmFja3MtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9kaXNjb25uZWN0ZWQt
Y2FsbGJhY2tzLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA4LTE3ICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFN1cHBvcnQgYWJicmV2aWF0aW9ucyBp
biBpT1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Nvbm5lY3RlZC1j
YWxsYmFja3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL2Nvbm5lY3RlZC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Nvbm5lY3RlZC1jYWxsYmFj
a3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKworUEFTUyBJ
bnNlcnRpbmcgYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFu
ZCBpbnZva2UgY29ubmVjdGVkQ2FsbGJhY2sgCitQQVNTIEluc2VydGluZyBhIGN1c3RvbSBlbGVt
ZW50IGludG8gYSBkZXRhY2hlZCBub2RlIG11c3Qgbm90IGVucXVldWUgYW5kIGludm9rZSBjb25u
ZWN0ZWRDYWxsYmFjayAKK0ZBSUwgSW5zZXJ0aW5nIGEgY3VzdG9tIGVsZW1lbnQgaW50byBhIHdp
bmRvdy1sZXNzIGRvY3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGNvbm5lY3RlZENhbGxi
YWNrIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAyIGdvdCAw
CitQQVNTIEluc2VydGluZyBhbiBhbmNlc3RvciBvZiBhIGN1c3RvbSBlbGVtZW50IGludG8gYSBk
b2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjayAKK0ZBSUwg
SW5zZXJ0aW5nIGFuIGFuY2VzdG9yIG9mIGN1c3RvbSBlbGVtZW50IGludG8gYSB3aW5kb3ctbGVz
cyBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjayBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMiBnb3QgMAorUEFTUyBJ
bnNlcnRpbmcgYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgY29ubmVjdGVkIHNoYWRvdyB0cmVlIG11
c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGNvbm5lY3RlZENhbGxiYWNrIAorUEFTUyBJbnNlcnRpbmcg
dGhlIHNoYWRvdyBob3N0IG9mIGEgc2hhZG93IHRyZWUgd2l0aCBhIGN1c3RvbSBlbGVtZW50IGlu
dG8gYSBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjayAK
K1BBU1MgSW5zZXJ0aW5nIGEgY3VzdG9tIGVsZW1lbnQgaW50byBhIGRldGFjaGVkIHNoYWRvdyB0
cmVlIG11c3Qgbm90IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjayAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvY29ubmVjdGVkLWNhbGxiYWNrcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Nvbm5l
Y3RlZC1jYWxsYmFja3MuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9jb25uZWN0ZWQtY2FsbGJhY2tzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5D
dXN0b20gRWxlbWVudHM6IGNvbm5lY3RlZENhbGxiYWNrPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1
dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmci
PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJjb25uZWN0ZWRDYWxsYmFjayBtdXN0IGJl
IGVucXVldWVkIHdoZW5ldmVyIGN1c3RvbSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBkb2N1
bWVudCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJj
b21wb25lbnRzL3NwZWMvY3VzdG9tLyNkZm4tY29ubmVjdGVkLWNhbGxiYWNrIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3Mn
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordmFy
IGNhbGxzID0gW107CitjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
CisgICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7IGNhbGxzLnB1c2goJ2Nvbm5lY3RlZCcsIHRoaXMp
OyB9CisgICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7IGNhbGxzLnB1c2goJ2Rpc2Nvbm5lY3Rl
ZCcsIHRoaXMpOyB9Cit9CitjdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50
JywgTXlDdXN0b21FbGVtZW50KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3Rh
bmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKworICAg
IGNhbGxzID0gW107CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnN0YW5jZSk7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0ZWQnLCBpbnN0YW5jZV0pOwor
fSwgJ0luc2VydGluZyBhIGN1c3RvbSBlbGVtZW50IGludG8gYSBkb2N1bWVudCBtdXN0IGVucXVl
dWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxl
bWVudCcpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGluc3RhbmNlKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbXSk7Cit9LCAnSW5zZXJ0aW5nIGEgY3VzdG9t
IGVsZW1lbnQgaW50byBhIGRldGFjaGVkIG5vZGUgbXVzdCBub3QgZW5xdWV1ZSBhbmQgaW52b2tl
IGNvbm5lY3RlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0
YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAg
dmFyIGRvY3VtZW50V2l0aG91dFdpbmRvdyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0
ZUhUTUxEb2N1bWVudCgpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICBkb2N1bWVudFdpdGhvdXRX
aW5kb3cuYm9keS5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhjYWxscywgWydjb25uZWN0ZWQnLCBpbnN0YW5jZV0pOworfSwgJ0luc2VydGluZyBhIGN1c3Rv
bSBlbGVtZW50IGludG8gYSB3aW5kb3ctbGVzcyBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGlu
dm9rZSBjb25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
aW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOwor
ICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxs
cywgWydjb25uZWN0ZWQnLCBpbnN0YW5jZV0pOworfSwgJ0luc2VydGluZyBhbiBhbmNlc3RvciBv
ZiBhIGN1c3RvbSBlbGVtZW50IGludG8gYSBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9r
ZSBjb25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5z
dGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAg
IHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBwYXJlbnQu
YXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgIHZhciBkb2N1bWVudFdpdGhvdXRXaW5kb3cgPSBk
b2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKKworICAgIGNhbGxz
ID0gW107CisgICAgZG9jdW1lbnRXaXRob3V0V2luZG93LmJvZHkuYXBwZW5kQ2hpbGQocGFyZW50
KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ2Nvbm5lY3RlZCcsIGluc3RhbmNl
XSk7Cit9LCAnSW5zZXJ0aW5nIGFuIGFuY2VzdG9yIG9mIGN1c3RvbSBlbGVtZW50IGludG8gYSB3
aW5kb3ctbGVzcyBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxs
YmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIHZhciBob3N0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGhvc3QpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxk
KGluc3RhbmNlKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ2Nvbm5lY3RlZCcs
IGluc3RhbmNlXSk7Cit9LCAnSW5zZXJ0aW5nIGEgY3VzdG9tIGVsZW1lbnQgaW50byBhIGNvbm5l
Y3RlZCBzaGFkb3cgdHJlZSBtdXN0IGVucXVldWUgYW5kIGludm9rZSBjb25uZWN0ZWRDYWxsYmFj
aycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIHZhciBob3N0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFj
aFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGlu
c3RhbmNlKTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChob3N0KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ2Nvbm5lY3RlZCcsIGlu
c3RhbmNlXSk7Cit9LCAnSW5zZXJ0aW5nIHRoZSBzaGFkb3cgaG9zdCBvZiBhIHNoYWRvdyB0cmVl
IHdpdGggYSBjdXN0b20gZWxlbWVudCBpbnRvIGEgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBp
bnZva2UgY29ubmVjdGVkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsK
KyAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBz
aGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CisKKyAgICBj
YWxscyA9IFtdOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFtdKTsKK30sICdJbnNlcnRpbmcgYSBjdXN0b20gZWxl
bWVudCBpbnRvIGEgZGV0YWNoZWQgc2hhZG93IHRyZWUgbXVzdCBub3QgZW5xdWV1ZSBhbmQgaW52
b2tlIGNvbm5lY3RlZENhbGxiYWNrJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGlzY29ubmVjdGVkLWNhbGxi
YWNrcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20t
ZWxlbWVudHMvZGlzY29ubmVjdGVkLWNhbGxiYWNrcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGlzY29ubmVjdGVkLWNhbGxi
YWNrcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorCitQQVNT
IFJlbW92aW5nIGEgY3VzdG9tIGVsZW1lbnQgZnJvbSBhIGRvY3VtZW50IG11c3QgZW5xdWV1ZSBh
bmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrIAorUEFTUyBSZW1vdmluZyBhIGN1c3RvbSBl
bGVtZW50IGZyb20gYSBkZXRhaGVkIG5vZGUgbXVzdCBub3QgZW5xdWV1ZSBhbmQgaW52b2tlIGNv
bm5lY3RlZENhbGxiYWNrIAorRkFJTCBSZW1vdmluZyBhIGN1c3RvbSBlbGVtZW50IGZyb20gYSB3
aW5kb3ctbGVzcyBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRD
YWxsYmFjayBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMiBn
b3QgMAorUEFTUyBSZW1vdmluZyBhbiBhbmNlc3RvciBvZiBhIGN1c3RvbSBlbGVtZW50IGZyb20g
YSBkb2N1bWVudCBtdXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRDYWxsYmFjayAK
K0ZBSUwgUmVtb3ZpbmcgYW4gYW5jZXN0b3Igb2YgY3VzdG9tIGVsZW1lbnQgZnJvbSBhIGEgd2lu
ZG93LWxlc3MgZG9jdW1lbnQgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgZGlzY29ubmVjdGVkQ2Fs
bGJhY2sgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDIgZ290
IDAKK1BBU1MgUmVtb3ZpbmcgYSBjdXN0b20gZWxlbWVudCBmcm9tIGEgY29ubmVjdGVkIHNoYWRv
dyB0cmVlIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrIAorUEFT
UyBSZW1vdmluZyB0aGUgc2hhZG93IGhvc3Qgb2YgYSBzaGFkb3cgdHJlZSB3aXRoIGEgY3VzdG9t
IGVsZW1lbnQgZnJvbSBhIGRvY3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5l
Y3RlZENhbGxiYWNrIAorUEFTUyBSZW1vdmluZyBhIGN1c3RvbSBlbGVtZW50IGZyb20gYSBkZXRh
Y2hlZCBzaGFkb3cgdHJlZSBtdXN0IG5vdCBlbnF1ZXVlIGFuZCBpbnZva2UgZGlzY29ubmVjdGVk
Q2FsbGJhY2sgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Rpc2Nv
bm5lY3RlZC1jYWxsYmFja3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9kaXNjb25uZWN0ZWQtY2FsbGJhY2tzLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGlzY29ubmVjdGVkLWNhbGxiYWNr
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBkaXNjb25uZWN0ZWRDYWxs
YmFjazwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhy
ZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iZGlzY29ubmVjdGVkQ2FsbGJhY2sgbXVzdCBiZSBlbnF1ZXVlZCB3aGVuZXZlciBjdXN0b20g
ZWxlbWVudCBpcyByZW1vdmVkIGZyb20gYSBkb2N1bWVudCI+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvY3VzdG9tLyNkZm4t
Y29ubmVjdGVkLWNhbGxiYWNrIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordmFyIGNhbGxzID0gW107CitjbGFzcyBNeUN1c3Rv
bUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7
IGNhbGxzLnB1c2goJ2Nvbm5lY3RlZCcsIHRoaXMpOyB9CisgICAgZGlzY29ubmVjdGVkQ2FsbGJh
Y2soKSB7IGNhbGxzLnB1c2goJ2Rpc2Nvbm5lY3RlZCcsIHRoaXMpOyB9Cit9CitjdXN0b21FbGVt
ZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwordGVz
dChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlu
c3RhbmNlKTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChpbnN0YW5jZSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydkaXNjb25uZWN0
ZWQnLCBpbnN0YW5jZV0pOworfSwgJ1JlbW92aW5nIGEgY3VzdG9tIGVsZW1lbnQgZnJvbSBhIGRv
Y3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrJyk7CisK
K3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisK
KyAgICBjYWxscyA9IFtdOworICAgIHBhcmVudC5yZW1vdmVDaGlsZChpbnN0YW5jZSk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgW10pOworfSwgJ1JlbW92aW5nIGEgY3VzdG9tIGVs
ZW1lbnQgZnJvbSBhIGRldGFoZWQgbm9kZSBtdXN0IG5vdCBlbnF1ZXVlIGFuZCBpbnZva2UgY29u
bmVjdGVkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICB2YXIg
ZG9jdW1lbnRXaXRob3V0V2luZG93ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRN
TERvY3VtZW50KCk7CisgICAgZG9jdW1lbnRXaXRob3V0V2luZG93LmJvZHkuYXBwZW5kQ2hpbGQo
aW5zdGFuY2UpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICBkb2N1bWVudFdpdGhvdXRXaW5kb3cu
Ym9keS5yZW1vdmVDaGlsZChpbnN0YW5jZSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxs
cywgWydkaXNjb25uZWN0ZWQnLCBpbnN0YW5jZV0pOworfSwgJ1JlbW92aW5nIGEgY3VzdG9tIGVs
ZW1lbnQgZnJvbSBhIHdpbmRvdy1sZXNzIGRvY3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tl
IGRpc2Nvbm5lY3RlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBp
bnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7Cisg
ICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVu
dC5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChw
YXJlbnQpOworCisgICAgY2FsbHMgPSBbXTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KHBhcmVudCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydkaXNjb25uZWN0ZWQn
LCBpbnN0YW5jZV0pOworfSwgJ1JlbW92aW5nIGFuIGFuY2VzdG9yIG9mIGEgY3VzdG9tIGVsZW1l
bnQgZnJvbSBhIGRvY3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENh
bGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgdmFyIHBhcmVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChp
bnN0YW5jZSk7CisgICAgdmFyIGRvY3VtZW50V2l0aG91dFdpbmRvdyA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOworICAgIGRvY3VtZW50V2l0aG91dFdpbmRv
dy5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CisKKyAgICBjYWxscyA9IFtdOworICAgIGRvY3Vt
ZW50V2l0aG91dFdpbmRvdy5ib2R5LnJlbW92ZUNoaWxkKHBhcmVudCk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhjYWxscywgWydkaXNjb25uZWN0ZWQnLCBpbnN0YW5jZV0pOworfSwgJ1JlbW92
aW5nIGFuIGFuY2VzdG9yIG9mIGN1c3RvbSBlbGVtZW50IGZyb20gYSBhIHdpbmRvdy1sZXNzIGRv
Y3VtZW50IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGRpc2Nvbm5lY3RlZENhbGxiYWNrJyk7CisK
K3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgdmFyIGhvc3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOwor
ICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7
CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisKKyAgICBjYWxscyA9IFtd
OworICAgIHNoYWRvd1Jvb3QucmVtb3ZlQ2hpbGQoaW5zdGFuY2UpOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoY2FsbHMsIFsnZGlzY29ubmVjdGVkJywgaW5zdGFuY2VdKTsKK30sICdSZW1vdmlu
ZyBhIGN1c3RvbSBlbGVtZW50IGZyb20gYSBjb25uZWN0ZWQgc2hhZG93IHRyZWUgbXVzdCBlbnF1
ZXVlIGFuZCBpbnZva2UgZGlzY29ubmVjdGVkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAo
KSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9t
LWVsZW1lbnQnKTsKKyAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQn
fSk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgIGNhbGxzID0gW107CisgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChob3N0KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBb
J2Rpc2Nvbm5lY3RlZCcsIGluc3RhbmNlXSk7Cit9LCAnUmVtb3ZpbmcgdGhlIHNoYWRvdyBob3N0
IG9mIGEgc2hhZG93IHRyZWUgd2l0aCBhIGN1c3RvbSBlbGVtZW50IGZyb20gYSBkb2N1bWVudCBt
dXN0IGVucXVldWUgYW5kIGludm9rZSBkaXNjb25uZWN0ZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdt
eS1jdXN0b20tZWxlbWVudCcpOworICAgIHZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTog
J2Nsb3NlZCd9KTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGluc3RhbmNlKTsKKworICAg
IGNhbGxzID0gW107CisgICAgc2hhZG93Um9vdC5yZW1vdmVDaGlsZChpbnN0YW5jZSk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgW10pOworfSwgJ1JlbW92aW5nIGEgY3VzdG9tIGVs
ZW1lbnQgZnJvbSBhIGRldGFjaGVkIHNoYWRvdyB0cmVlIG11c3Qgbm90IGVucXVldWUgYW5kIGlu
dm9rZSBkaXNjb25uZWN0ZWRDYWxsYmFjaycpOworCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="309890"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>