<?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>205194</bug_id>
          
          <creation_ts>2019-12-12 20:16:12 -0800</creation_ts>
          <short_desc>[JSC] Remove ArrayBufferNeuteringWatchpointSet</short_desc>
          <delta_ts>2019-12-16 14:18:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1598242</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-12 20:16:12 -0800</bug_when>
    <thetext>I think, just putting RefPtr&lt;WatchpointSet&gt; in ArrayBuffer is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598243</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-12 20:16:53 -0800</bug_when>
    <thetext>By reordering ArrayBuffer&apos;s field, we can save 8bytes. We can put RefPtr&lt;WatchpointSet&gt; in this place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598538</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 16:03:06 -0800</bug_when>
    <thetext>This is the last patch, after that, all non-object non-butterfly JSCells are in IsoSubspace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598551</commentid>
    <comment_count>3</comment_count>
      <attachid>385655</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 16:30:06 -0800</bug_when>
    <thetext>Created attachment 385655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598558</commentid>
    <comment_count>4</comment_count>
      <attachid>385658</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 16:51:00 -0800</bug_when>
    <thetext>Created attachment 385658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598561</commentid>
    <comment_count>5</comment_count>
      <attachid>385661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 17:00:25 -0800</bug_when>
    <thetext>Created attachment 385661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598563</commentid>
    <comment_count>6</comment_count>
      <attachid>385663</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 17:14:21 -0800</bug_when>
    <thetext>Created attachment 385663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598581</commentid>
    <comment_count>7</comment_count>
      <attachid>385665</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 17:53:26 -0800</bug_when>
    <thetext>Created attachment 385665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598582</commentid>
    <comment_count>8</comment_count>
      <attachid>385666</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 18:05:08 -0800</bug_when>
    <thetext>Created attachment 385666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598607</commentid>
    <comment_count>9</comment_count>
      <attachid>385675</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 21:02:02 -0800</bug_when>
    <thetext>Created attachment 385675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598610</commentid>
    <comment_count>10</comment_count>
      <attachid>385678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-13 21:27:51 -0800</bug_when>
    <thetext>Created attachment 385678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599025</commentid>
    <comment_count>11</comment_count>
      <attachid>385678</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-16 12:28:36 -0800</bug_when>
    <thetext>Comment on attachment 385678
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599026</commentid>
    <comment_count>12</comment_count>
      <attachid>385678</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-16 12:29:02 -0800</bug_when>
    <thetext>Comment on attachment 385678
Patch

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

&gt; Source/JavaScriptCore/runtime/ArrayBuffer.cpp:387
&gt; +    m_neuteringWatchpointSet.fireAll(vm, &quot;Array buffer was neutered&quot;);

is it worth keeping this in notifyIncommingReferencesOfTransfer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599096</commentid>
    <comment_count>13</comment_count>
      <attachid>385678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-16 14:16:04 -0800</bug_when>
    <thetext>Comment on attachment 385678
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ArrayBuffer.cpp:387
&gt;&gt; +    m_neuteringWatchpointSet.fireAll(vm, &quot;Array buffer was neutered&quot;);
&gt; 
&gt; is it worth keeping this in notifyIncommingReferencesOfTransfer?

Renamed it to `notifyNeutering` and add this firing into `notifyNeutering` method :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599098</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-16 14:17:36 -0800</bug_when>
    <thetext>Committed r253576: &lt;https://trac.webkit.org/changeset/253576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599099</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-16 14:18:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57984773&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385655</attachid>
            <date>2019-12-13 16:30:06 -0800</date>
            <delta_ts>2019-12-13 16:50:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213163005.patch</filename>
            <type>text/plain</type>
            <size>69629</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjA3MWZjZTMzYzg1MjZkMjdhZjBiY2E4MDI4MDg3NmJhNjVmZWZkLi5jYWY2Y2I1MWIwYmE5NGFl
OGE0YWU4NmY4ODU4YjFmYWNhNzM1NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgTm90IHRvIGluY3JlYXNlIHNp
emVvZihBcnJheUJ1ZmZlciksIHdlIHVzZSBQYWNrZWRSZWZQdHIgaW4gQXJyYXlCdWZmZXIsIHdo
aWNoIGlzIFJlZlB0ciB3aGlsZSB0aGUgcG9pbnRlciBpcyBwYWNrZWQuIFRoaXMgZ2l2ZXMgdXMg
OCBieXRlcyB3aGljaCBpcworICAgICAgICBzdWl0YWJsZSB0byBwbGFjZSBJbmxpbmVXYXRjaHBv
aW50U2V0IHdpdGhvdXQgaW5jcmVhc2luZyBzaXplb2YoQXJyYXlCdWZmZXIpLiBXZSBhbHNvIGNv
bnZlcnQgRnVuY3Rpb248PiBpbiBBcnJheUJ1ZmZlciB0byBQYWNrZWRSZWZQdHI8U2hhcmVkVGFz
azw+PiwKKyAgICAgICAgYW5kIHNoYXJlIEdpZ2FjYWdlOjpmcmVlIGRlc3RydWN0b3IgYnkgbXVs
dGlwbGUgQXJyYXlCdWZmZXIuIFRoaXMgaXMgbWVtb3J5IGVmZmljaWVudCBzaW5jZSB0aGlzIGlz
IHRoZSBjb21tb24gY2FzZSwgYW5kIHdlIGNhbiBwYWNrIHRoaXMgZmllbGQgZWFzaWx5LgorCisg
ICAgICAgICogQVBJL0pTVHlwZWRBcnJheS5jcHA6CisgICAgICAgIChKU09iamVjdE1ha2VUeXBl
ZEFycmF5V2l0aEJ5dGVzTm9Db3B5KToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUFycmF5QnVmZmVy
V2l0aEJ5dGVzTm9Db3B5KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGRmZy9ERkdE
ZXNpcmVkV2F0Y2hwb2ludHMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5QnVmZmVyVmll
d1dhdGNocG9pbnRBZGFwdG9yOjphZGQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwOgorICAgICAgICAoSlNDOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjp+U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50czo6bWFrZVNoYXJlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OnNoYXJlV2l0aCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVk
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyYW5zZmVyVG8pOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlcjo6bmV1dGVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6Om5vdGlm
eUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHdhc20vanMvSlNX
ZWJBc3NlbWJseU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6
OmJ1ZmZlcik6CisKIDIwMTktMTItMTMgIEppbSBNYXNvbiAgPGptYXNvbkBpYmlueC5jb20+CiAK
ICAgICAgICAgW0dUS10gV2ViS2l0R1RLIGJ1aWxkIGhhbmdzIG9uIGctaXItc2Nhbm5lcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAzY2NmMzA2NTZiNDQ1Y2ZiMzNmYTZiZGNkZTBkYWE1YjUyYWQ3MjkyLi5hNTUwYWY4Y2YzOGMw
YmQwNTEwMjQ1N2Q1NDYxYzRmNGUzNTNlNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEy
LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
UmVtb3ZlIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBhY2tlZFJl
ZiBhbmQgUGFja2VkUmVmUHRyLiBUaGV5IGFyZSBSZWYgYW5kIFJlZlB0ciwgYnV0IGl0cyBpbnRl
cm5hbCBwb2ludGVyIGlzIHBhY2tlZC4KKyAgICAgICAgU28gd2UgY2FuIHJlcHJlc2VudCB0aGVt
IGluIDYgYnl0ZXMgd2l0aCAxIGJ5dGUgYWxpZ25tZW50LgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9QYWNrZWQuaDoKKyAgICAgICAgKFdURjo6YWxpZ25vZik6CisgICAgICAgICog
d3RmL1BhY2tlZFJlZi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUGFj
a2VkUmVmUHRyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUmVmUHRy
Lmg6CisgICAgICAgIChXVEY6OlJlZlB0cjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlJlZlB0cjo6dW5zcGVjaWZpZWRCb29sVHlwZUluc3RhbmNl
IGNvbnN0KToKKwogMjAxOS0xMi0xMyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gRGVueSBtYWNoIGxvb2t1cCBhY2Nlc3MgdG8gIiouYXBwbGUt
ZXh0ZW5zaW9uLXNlcnZpY2UiIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAppbmRleCBlYjlkYzMwNmI0NGZmMzUwMWZm
NjQ5ZDI5ZmZlMTI5NDEyMmQ4NWJjLi40NjAzNWE5ZDE2YmQ5ZTM1NTk1YWNhZDhiZTcyMzNhZmNl
MzMxMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJh
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBA
IC0xODQsMTAgKzE4NCwxMCBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0
aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheQogCiAgICAgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFycmF5VHlwZShhcnJheVR5
cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhi
eXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBjcmVhdGVTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPihbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKICAgICAgICAg
ICAgIGRlc3RydWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwotICAgIH0pOworICAgIH0pKTsK
ICAgICBKU09iamVjdCogcmVzdWx0ID0gY3JlYXRlVHlwZWRBcnJheShnbG9iYWxPYmplY3QsIGFy
cmF5VHlwZSwgV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGggLyBlbGVtZW50Qnl0ZVNpemUpOwog
ICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09
IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MzEyLDEwICszMTIsMTAgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMKICAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMs
IGJ5dGVMZW5ndGgsIFs9XSh2b2lkKiBwKSB7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBieXRlTGVuZ3RoLCBjcmVhdGVTaGFyZWRUYXNrPHZv
aWQodm9pZCopPihbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoYnl0ZXNEZWFsbG9jYXRvcikK
ICAgICAgICAgICAgIGJ5dGVzRGVhbGxvY2F0b3IocCwgZGVhbGxvY2F0b3JDb250ZXh0KTsKLSAg
ICB9KTsKKyAgICB9KSk7CiAKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlC
dWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgV1RGTW92ZShidWZmZXIpKTsKICAgICBpZiAo
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRp
b25TdGF0dXM6OkRpZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNjFk
NzA1Y2MyZTNjNjE5ZWM1NDRiNzY2ZWI3NGQyOGE4NGY4OGM2Li4zZGZkZTYzNmQ1MjAyNGE2NmIx
MDc4YzMyNjg1NTU4NjJmMDM1YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NzUyLDcgKzc1Miw2IEBACiAJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3Ry
dWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkM5MjE2MUI5NEZCM0Uw
MDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9w
ZXJ0eVR5cGVLZXkuaCAqLzsgfTsKIAkJMEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0
YW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGQzk5RDAxODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRkM5OUQ1MTg0RUUzMTgwMDlD
MTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBB
QiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyB9
OwogCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRFMTRFRjkwOTUwMEM3
MjUzMiAvKiBERkdDU0VQaGFzZS5oICovOyB9OwogCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIg
LyogREZHUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRkZDOTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovOyB9OwpAQCAtMzI1
Myw4ICszMjUyLDYgQEAKIAkJMEZGQjgwQkIyMEE3OTQ3MDAwMDZBQUY2IC8qIEpJVENvZGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGVJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAv
KiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHUHJvcGVydHlUeXBlS2V5Lmg7IHBhdGggPSBkZmcvREZHUHJvcGVydHlUeXBlS2V5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBD
b25zdGFudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRN
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkM5OUQyMTg0RUUzMTgwMDlD
MTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGQzk5RDMxODRFRTMxODAw
OUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZD
OTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ1NFUGhh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk0Myw4ICs2OTQwLDYgQEAK
IAkJCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCAqLywKIAkJ
CQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovLAogCQkJCUE3
QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAotCQkJCTBGRkM5OUQy
MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3Bw
ICovLAotCQkJCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQuaCAqLywKIAkJCQkwRjMwRkI2MDFEQzJERTk2MDAzMTI0RjIgLyogQXJy
YXlCdWZmZXJTaGFyaW5nTW9kZS5oICovLAogCQkJCUE3QThBRjI3MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlclZpZXcuY3BwICovLAogCQkJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlclZpZXcuaCAqLywKQEAgLTg4ODgsNyArODg4Myw2IEBACiAJCQkJODZBREQx
NDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwRkI2
MTFEQzJERTk5MDAzMTI0RjIgLyogQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdBOEFGMzcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDUz
Y2NjNzRmODJkOWJkZTI1MzNjMmY2OTNlNjY3NmE5YmVmMzFiNjguLmZlNWY1MTkzYmQ1NTFiNjZi
NmNmMTJjZjk3NWI5N2UzYmI1NGQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTcwMyw3ICs3MDMsNiBAQCBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIHJ1bnRpbWUvQWJzdHJh
Y3RNb2R1bGVSZWNvcmQuY3BwCiBydW50aW1lL0FyZ0xpc3QuY3BwCiBydW50aW1lL0FycmF5QnVm
ZmVyLmNwcAotcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCiBy
dW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCBjMjQzMWYwM2ZjZTk2N2My
ZjZhN2VlNDBhYmYzZDU2MTU1NDYzM2JlLi5hMTQwYmRjZWZkNjk0YzA4NTE1NDFmMDcwNTAyZjBl
YWQ2NzdlZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgpAQCAtMzgsMTkgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCgKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcsIENvbW1vbkRhdGEm
IGNvbW1vbikKIHsKLSAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7CisgICAgY29kZUJsb2Nr
LT5hZGRDb25zdGFudChDb25jdXJyZW50SlNMb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spLCB2aWV3
KTsgLy8gRm9yIGNvbW1vbiB1c2VycywgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIGlmIGl0J3Mg
d2VhayBvciBub3QuIElmIHJlZmVyZW5jZXMgdG8gaXQgZ28gYXdheSwgd2UgZ28gYXdheSwgdG9v
LgogICAgIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IG51bGxw
dHI7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKICAgICAgICAgd2F0Y2hwb2ludCA9IGNvbW1vbi53YXRjaHBvaW50cy5hZGQoY29k
ZUJsb2NrKTsKICAgICB9Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBu
ZXV0ZXJpbmdXYXRjaHBvaW50ID0KLSAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZChX
VEZNb3ZlKHdhdGNocG9pbnQpKTsKLSAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KENvbmN1cnJl
bnRKU0xvY2tlcihjb2RlQmxvY2stPm1fbG9jayksIG5ldXRlcmluZ1dhdGNocG9pbnQpOworICAg
IEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXlCdWZmZXIpOwogICAgIC8vIEZJWE1FOiBXZSBkb24n
dCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4Ci0g
ICAgdm0uaGVhcC5hZGRSZWZlcmVuY2UobmV1dGVyaW5nV2F0Y2hwb2ludCwgdmlldy0+cG9zc2li
bHlTaGFyZWRCdWZmZXIoKSk7CisgICAgYXJyYXlCdWZmZXItPm5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQoKS5hZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7CiB9CiAKIHZvaWQgU3ltYm9sVGFibGVBZGFw
dG9yOjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5j
cHAKaW5kZXggMDdiZGEzOGE2ZTIyOGFmZGQwNDFiMjE4NjBjN2FmNDIzMTIzMzQ3NS4uM2QwZGMy
NTE2MjE3MjU4M2M5MDI5ODFiZGRiZWY3YzA0YWE4MDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMjYsMTMgKzI2LDIyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9HaWdhY2Fn
ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4+IGRlc3RydWN0b3I7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgZGVzdHJ1Y3Rvci5jb25zdHJ1Y3QoY3JlYXRlU2hhcmVkVGFz
azx2b2lkKHZvaWQqKT4oW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgcCk7IH0pKTsKKyAgICB9KTsKKyAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5j
b3B5UmVmKCk7Cit9CisKIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAg
LCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKQEAgLTQyLDggKzUxLDEwIEBAIFNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCog
ZGF0YSwgdW5zaWduZWQgc2l6ZSwKIAogU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6flNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHMoKQogewotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGRuJ3QgdXNl
IGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdldFVuc2FmZSgpKTsKKyAgICBpZiAobV9k
ZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2Fm
ZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2OTgKKyAg
ICAgICAgbV9kZXN0cnVjdG9yLT5ydW4obV9kYXRhLmdldFVuc2FmZSgpKTsKKyAgICB9CiB9CiAK
IEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoKQpAQCAtODQsMTUgKzk1
LDE3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6Y2xlYXIoKQogCiB2b2lkIEFycmF5QnVm
ZmVyQ29udGVudHM6OmRlc3Ryb3koKQogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNl
IGdldFVuc2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3Njk4Ci0gICAgbV9kZXN0cnVjdG9yKG1fZGF0YS5nZXRVbnNhZmUoKSk7CisgICAgaWYgKG1f
ZGVzdHJ1Y3RvcikgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IHVzZSBnZXRVbnNh
ZmUgaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY5OAor
ICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEuZ2V0VW5zYWZlKCkpOworICAgIH0KIH0K
IAogdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiB7Ci0gICAgbV9kZXN0cnVjdG9y
ID0gW10gKHZvaWQqKSB7IH07Ci0gICAgbV9zaGFyZWQgPSBudWxscHRyOwogICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgbV9kZXN0cnVjdG9yID0gbnVsbHB0cjsKKyAgICBtX3NoYXJlZCA9IG51
bGxwdHI7CiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKQEAgLTEyMywxMyArMTM2LDEzIEBA
IHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAKICAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0
ZXM7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVS
X1NJWkUpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2b2lkKiBwKSB7IEdpZ2FjYWdlOjpmcmVl
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIHApOyB9OworICAgIG1fZGVzdHJ1Y3RvciA9IHByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6Om1h
a2VTaGFyZWQoKQogewogICAgIG1fc2hhcmVkID0gYWRvcHRSZWYobmV3IFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMoZGF0YSgpLCBzaXplSW5CeXRlcygpLCBXVEZNb3ZlKG1fZGVzdHJ1Y3Rvcikp
KTsKLSAgICBtX2Rlc3RydWN0b3IgPSBbXSAodm9pZCopIHsgfTsKKyAgICBtX2Rlc3RydWN0b3Ig
PSBudWxscHRyOwogfQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyYW5zZmVyVG8oQXJy
YXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCkBAIC0xNTgsOSArMTcxLDkgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiB7CiAg
ICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwogICAgIEFTU0VSVChtX3NoYXJlZCk7Ci0gICAgb3Ro
ZXIubV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07Ci0gICAgb3RoZXIubV9zaGFyZWQgPSBt
X3NoYXJlZDsKICAgICBvdGhlci5tX2RhdGEgPSBtX2RhdGE7CisgICAgb3RoZXIubV9kZXN0cnVj
dG9yID0gbnVsbHB0cjsKKyAgICBvdGhlci5tX3NoYXJlZCA9IG1fc2hhcmVkOwogICAgIG90aGVy
Lm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwogICAgIFJFTEVBU0VfQVNTRVJUKG90aGVy
Lm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KQEAgLTE5Nyw3ICsy
MTAsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJD
b250ZW50cyYmIGNvbnRlbnRzKQogLy8gICBmcm9tIHRoZSBjYWdlLgogUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKQogewotICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0
aCwgW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7
IH0pOworICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgcHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwogfQogCiAvLyBGSVhNRTogV2UgY2Fubm90IHVzZSB0
aGlzIGV4Y2VwdCBpZiB0aGUgbWVtb3J5IGNvbWVzIGZyb20gdGhlIGNhZ2UuCkBAIC0zNzEsNiAr
Mzg0LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6dHJhbnNmZXJUbyhWTSYgdm0sIEFycmF5QnVmZmVy
Q29udGVudHMmIHJlc3VsdCkKIAogICAgIG1fY29udGVudHMudHJhbnNmZXJUbyhyZXN1bHQpOwog
ICAgIG5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKHZtKTsKKyAgICBtX25ldXRl
cmluZ1dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgIkFycmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQi
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzgxLDYgKzM5NSw3IEBAIHZvaWQgQXJyYXlC
dWZmZXI6Om5ldXRlcihWTSYgdm0pCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyB1bnVzZWQ7CiAg
ICAgbV9jb250ZW50cy50cmFuc2ZlclRvKHVudXNlZCk7CiAgICAgbm90aWZ5SW5jb21taW5nUmVm
ZXJlbmNlc09mVHJhbnNmZXIodm0pOworICAgIG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldC5maXJl
QWxsKHZtLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB2b2lkIEFycmF5QnVm
ZmVyOjpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYgdm0pCkBAIC0zODks
OCArNDA0LDYgQEAgdm9pZCBBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09m
VHJhbnNmZXIoVk0mIHZtKQogICAgICAgICBKU0NlbGwqIGNlbGwgPSBpbmNvbWluZ1JlZmVyZW5j
ZUF0KGkpOwogICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWND
YXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIGNlbGwpKQogICAgICAgICAgICAgdmlldy0+bmV1
dGVyKCk7Ci0gICAgICAgIGVsc2UgaWYgKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nhc3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0Kj4odm0sIGNlbGwpKQotICAgICAgICAgICAgd2F0Y2hwb2ludC0+ZmlyZUFsbCgpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
aW5kZXggZTZmNTVjZTBiZDk4OWRmYjE1ZDY2NDJkNmY4YWI1YzNiZjQ1MmZkOS4uZDYwYjVjZmI4
NjhmOTJmZmM2NTRiY2RiNWE5Y2I1NWYzMGIxOThiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0yNywxMCArMjcsMTIgQEAKIAogI2luY2x1ZGUg
IkFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRl
ZC5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVk
ZSA8d3RmL0NhZ2VkUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0j
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDYsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNs
YXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTQXJyYXlCdWZmZXI7CiAKLXR5cGVkZWYgRnVu
Y3Rpb248dm9pZCh2b2lkKik+IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uOwordXNpbmcg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZv
aWQqKT4+OwordXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNr
ZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+OwogCiBjbGFzcyBTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKQEAgLTU2LDcgKzU5LDcgQEAgY2xhc3MgU2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJh
eUJ1ZmZlckMKIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwot
ICAgIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKKyAgICBQYWNr
ZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgdW5zaWdu
ZWQgbV9zaXplSW5CeXRlczsKIH07CiAKQEAgLTk4LDEwICsxMDEsMTAgQEAgY2xhc3MgQXJyYXlC
dWZmZXJDb250ZW50cyB7CiAgICAgdm9pZCBjb3B5VG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwog
ICAgIHZvaWQgc2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmKTsKIAotICAgIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICBSZWZQdHI8U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0
cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUg
bV9kYXRhOworICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1
Y3RvcjsKKyAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFy
ZWQ7CiAgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKQEAgLTE0OCw2ICsxNTEsNyBA
QCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1
ZmZlcj4gewogCiAgICAgdm9pZCBuZXV0ZXIoVk0mKTsKICAgICBib29sIGlzTmV1dGVyZWQoKSB7
IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBu
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0
OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihBcnJheUJ1ZmZlciwgbV9jb250ZW50cykgKyBPQkpFQ1RfT0ZGU0VUT0YoQXJy
YXlCdWZmZXJDb250ZW50cywgbV9kYXRhKTsgfQogCkBAIC0xNjUsMTQgKzE2OSwxNSBAQCBjbGFz
cyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4g
ewogICAgIHZvaWQgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIoVk0mKTsKIAog
ICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50czsKKyAgICBJbmxpbmVXYXRjaHBvaW50
U2V0IG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldCB7IElzV2F0Y2hlZCB9OworcHVibGljOgorICAg
IFdlYWs8SlNBcnJheUJ1ZmZlcj4gbV93cmFwcGVyOworcHJpdmF0ZToKICAgICBDaGVja2VkPHVu
c2lnbmVkPiBtX3BpbkNvdW50OwogICAgIGJvb2wgbV9pc1dhc21NZW1vcnk7CiAgICAgLy8gbV9s
b2NrZWQgPT0gdHJ1ZSBtZWFucyB0aGF0IHNvbWUgQVBJIHVzZXIgZmV0Y2hlZCBtX2NvbnRlbnRz
IGRpcmVjdGx5IGZyb20gYSBUeXBlZEFycmF5IG9iamVjdCwKICAgICAvLyB0aGUgYnVmZmVyIGlz
IGJhY2tlZCBieSBhIFdlYkFzc2VtYmx5Lk1lbW9yeSwgb3IgaXMgYSBTaGFyZWRBcnJheUJ1ZmZl
ci4KICAgICBib29sIG1fbG9ja2VkOwotCi1wdWJsaWM6Ci0gICAgV2VhazxKU0FycmF5QnVmZmVy
PiBtX3dyYXBwZXI7CiB9OwogCiB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGIxNmQ4MTJhNGJjNTdjOGNlZjNhYjdhY2E3ZDMzOGM1YzBjOTNiZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQ6OnNfaW5mbyA9IHsKLSAgICAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICBDUkVBVEVfTUVUSE9EX1RBQkxF
KEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCkKLX07Ci0KLUFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZN
JiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0
cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJ
c1dhdGNoZWQpKSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19jYXN0PEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKTsKLX0KLQotQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQ6OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0KiByZXN1bHQgPSBuZXcKLSAgICAgICAgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+KHZtLmhlYXApKQotICAgICAgICBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQodm0pOwotICAgIHJlc3VsdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cnVjdHVyZSogQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQotewotICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZvKENlbGxU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKCkKLXsKLSAgICBtX3NldC0+ZmlyZUFsbCh2bSgp
LCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGM3MzdjY2U1OGMxYzk3ZDExNWE2MDljZGIzMGQwMTExOTQxMjNlYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTQ2FzdC5oIgot
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewotcHVi
bGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICAKLSAgICBzdGF0aWMgQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBjcmVhdGUoVk0mKTsKLQotICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYpOwotICAgIAotICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0Lmdl
dCgpOyB9Ci0gICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJik7Ci0gICAgCi0gICAgUmVm
PFdhdGNocG9pbnRTZXQ+IG1fc2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWYwYWE0ZTczNWQ2ZDhiYjQ4OWU4MDM4MWQw
MGI2NTEyZmVlZjgzMC4uZjUzOWY1MDViNmE4MTU3NDI1YzE5Y2FmYWJiNGI2ODk1Y2M3ZmZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIlZNLmgiCiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAj
aW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5o
IgpAQCAtNDY2LDcgKzQ2NSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNo
YWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJy
YXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB0ZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgdW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZh
bENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggYWYyMDE5ODBlNTBhOTNiYjYwMThmYjM2ZGJkZjVmYjE0NDg3ZTQzMS4uYjk0
MzliNjk5YjM3NmNlN2YyYTUzNmFmOGIxMjBiZmNhODFkNzcyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC02NjgsNyArNjY4LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5j
cHAKaW5kZXggM2Y4YmUzNmVmNmZiMDFjNmQ3MGQ3M2U4MzNkZjI2NTE0YzUxMDlhYS4uMTNjNjJm
NjgzNDA2NjdhNzQxODVlODhhZmJjNzg5YmI3ZjcwMmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKQEAgLTc5LDcg
Kzc5LDcgQEAgSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIC8vIFdlIGNhbid0IHVzZSBh
IHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3RydWN0b3IuLi4KICAg
ICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21lbW9yeS5nZXQoKTsKLSAg
ICBhdXRvIGRlc3RydWN0b3IgPSBbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRN
ZW1vcnkpXSAodm9pZCopIHsgfTsKKyAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRU
YXNrPHZvaWQodm9pZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1v
cnkpXSAodm9pZCopIHsgfSk7CiAgICAgbV9idWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKG1lbW9yeSgpLm1lbW9yeSgpLCBtZW1vcnkoKS5zaXplKCksIFdURk1vdmUoZGVzdHJ1
Y3RvcikpOwogICAgIG1fYnVmZmVyLT5tYWtlV2FzbU1lbW9yeSgpOwogICAgIG1fYnVmZmVyV3Jh
cHBlci5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwg
bV9idWZmZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDhlOGVjMTU5YTcxNDRmNjFhZDU4MGU1NjA1ZWM0MjdlNjljMzk4OGUuLjViZDdhYjQz
ZGUwNmY4OTNjMTY0ZDU5OWM2Y2M0ZjVmYjE3YjA1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjczLDYgKzY3Myw4IEBACiAJCUUzNENEMEQwMjI4MTBB
MDIwMDIwRDI5OSAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWdu
ZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5hbGlnbmVkQWNj
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5
MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVu
ZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1Q0IyM0E0NDVD
RDAwOERENEM4IC8qIFBhY2tlZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWYuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1Q0MyM0E0NDVFRTAwOERENEM4IC8qIFBh
Y2tlZFJlZlB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWZQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAv
KiBXb3JrZXJQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclBv
b2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5
NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDUFVUaW1lQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3
Nyw2ICsxMDc5LDggQEAKIAkJCQlBOEE0NzJEQjE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21T
b3VyY2UuaCAqLywKIAkJCQlFMzRDRDBEMDIyODEwQTAyMDAyMEQyOTkgLyogUGFja2VkLmggKi8s
CiAJCQkJQThBNDcyREYxNTFBODI1QjAwNDEyM0ZGIC8qIFBhY2tlZEludFZlY3Rvci5oICovLAor
CQkJCUUzNjg5NUNCMjNBNDQ1Q0QwMDhERDRDOCAvKiBQYWNrZWRSZWYuaCAqLywKKwkJCQlFMzY4
OTVDQzIzQTQ0NUVFMDA4REQ0QzggLyogUGFja2VkUmVmUHRyLmggKi8sCiAJCQkJQThBNDcyRTAx
NTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyRTMxNTFB
ODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgKi8sCiAJCQkJQThBNDcyRTQxNTFBODI1QjAw
NDEyM0ZGIC8qIFBhZ2VCbG9jay5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBhZmNjNjBl
MjIwMzI1Y2IxMDlmZWQ5YWVmNDgxYmQ5Yzk2ZjM4ZmY1Li5kYWU0YTcxYjI4ZDEzMDQyNGMwYmQ3
MzFiZTQxNjQzZjA1MmIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTU1LDYgKzE1NSw4
IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBPcHRpb25hbC5oCiAgICAgT3JkZXJNYWtl
ci5oCiAgICAgUGFja2VkLmgKKyAgICBQYWNrZWRSZWYuaAorICAgIFBhY2tlZFJlZlB0ci5oCiAg
ICAgUGFja2VkSW50VmVjdG9yLmgKICAgICBQYWdlQWxsb2NhdGlvbi5oCiAgICAgUGFnZUJsb2Nr
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhY2tlZC5oIGIvU291cmNlL1dURi93dGYv
UGFja2VkLmgKaW5kZXggODM5ZDNjODczMTVlNTAxMDhiYzk3MTgwNmNhOTQ1OThjMzEwMzllYi4u
YjIyZmM3NjFkNDI5NzRiOTgxMjViYjdlN2QxYzJkMWY5YTU3ODMwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGFja2VkLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKQEAgLTE2
Myw2ICsxNjMsMTAgQEAgY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAgICAgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gKmdldCgpOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0
KCk7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQg
Y29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0
eXBlZGVmIFQqIChQYWNrZWRBbGlnbmVkUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldCgpID8gJlBh
Y2tlZEFsaWduZWRQdHI6Om1fc3RvcmFnZSA6IG51bGxwdHI7IH0KICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KIAogICAgIFBhY2tlZEFsaWduZWRQ
dHImIG9wZXJhdG9yPShUKiB2YWx1ZSkKQEAgLTE3Miw5ICsxNzYsOSBAQCBjbGFzcyBQYWNrZWRB
bGlnbmVkUHRyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgIFQgZXhjaGFu
Z2UoVSYmIG5ld1ZhbHVlKQorICAgIFQqIGV4Y2hhbmdlKFUmJiBuZXdWYWx1ZSkKICAgICB7Ci0g
ICAgICAgIFQgb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsK
ICAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOwogICAgICAgICByZXR1cm4g
b2xkVmFsdWU7CiAgICAgfQpAQCAtMTg5LDE1ICsxOTMsMTUgQEAgY2xhc3MgUGFja2VkQWxpZ25l
ZFB0ciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFi
bGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KICAgICB2b2lkIHN3YXAoT3RoZXImIG90aGVy
KQogICAgIHsKLSAgICAgICAgVCB0MSA9IGdldCgpOwotICAgICAgICBUIHQyID0gb3RoZXIuZ2V0
KCk7CisgICAgICAgIFQqIHQxID0gZ2V0KCk7CisgICAgICAgIFQqIHQyID0gb3RoZXIuZ2V0KCk7
CiAgICAgICAgIHNldCh0Mik7CiAgICAgICAgIG90aGVyLnNldCh0MSk7CiAgICAgfQogCi0gICAg
dm9pZCBzd2FwKFQmIHQyKQorICAgIHZvaWQgc3dhcChUKiB0MikKICAgICB7Ci0gICAgICAgIFQg
dDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKICAgICAgICAgc3RkOjpzd2FwKHQx
LCB0Mik7CiAgICAgICAgIHNldCh0MSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGFja2VkUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NGVjZGZmOGQ3NmUzN2M3ZjM5ZmI4YWQ5ZDg3N2M2OTA1MzQyMWRjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvUGFja2VkUmVmLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWYgPSBSZWY8VCwgUGFj
a2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UGFj
a2VkUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkUmVmUHRyLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQ3ZDdkZmI2NTdmZWEzZWU3
NjAzZjA3MjI3NDI2NzUwZDc2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
UGFja2VkUmVmUHRyLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1BhY2tl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWZQdHIgPSBSZWZQdHI8VCwgUGFja2VkUHRy
VHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UGFja2VkUmVm
UHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9SZWZQdHIuaAppbmRleCA1YmVjNmM3ZWUyMGU4NjcyMzUyNzkzMDcyOGU4Y2YxODNkYjliNDhi
Li42ZDRjNjQ0NGU3ZWFmMWFhMWVhYWY0MzI5YTVmNjk4ZjA5M2VkMGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAt
ODEsOCArODEsOCBAQCBjbGFzcyBSZWZQdHIgewogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gIW1fcHRyOyB9CiAKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxs
b3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIg
dHlwZXMuCi0gICAgdHlwZWRlZiBUKiAoUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7Ci0g
ICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8g
JlJlZlB0cjo6bV9wdHIgOiBudWxscHRyOyB9CisgICAgdXNpbmcgVW5zcGVjaWZpZWRCb29sVHlw
ZSA9IHZvaWQgKFJlZlB0cjo6KikoKSBjb25zdDsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJv
b2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjp1bnNwZWNpZmllZEJvb2xU
eXBlSW5zdGFuY2UgOiBudWxscHRyOyB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQogICAgIApAQCAtMTAyLDYgKzEwMiw4IEBAIGNsYXNz
IFJlZlB0ciB7CiAgICAgUmVmUHRyIGNvcHlSZWYoKSBjb25zdCAmIFdBUk5fVU5VU0VEX1JFVFVS
TiB7IHJldHVybiBSZWZQdHIobV9wdHIpOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCB1bnNwZWNp
ZmllZEJvb2xUeXBlSW5zdGFuY2UoKSBjb25zdCB7IH0KKwogICAgIGZyaWVuZCBSZWZQdHIgYWRv
cHRSZWY8VCwgUHRyVHJhaXRzPihUKik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWT4gZnJpZW5kIGNsYXNzIFJlZlB0cjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg4OWUzNWI1NjRlMGY1ZDQ2MTNlOGI0NmRmM2I4NjM4
YTM3ZjcwMjcuLmNhYzc3NzE5ZjNhNDE5ZDIyMTc4ZTk4NmMxNjk1YjU2N2ZiODdhMmIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBm
b3IgUGFja2VkUmVmIGFuZCBQYWNrZWRSZWZQdHIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BhY2tlZFJlZi5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNzV2l0aFJlZik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpSZWZDaGVja2luZ1JlZkxvZ2dlcjo6UmVmQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6UmVmQ2hlY2tpbmdSZWZMb2dnZXI6OnJlZik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpSZWZDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6RGVyaXZlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpEZXJpdmVkUmVmQ2hl
Y2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tl
ZFJlZlB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25zdFJl
ZkNvdW50ZWQ6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJl
ZkNvdW50ZWRSZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJl
Zik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6UmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bG9nZ2VyTmFt
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6cmVm
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpkZXJl
Zik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6
Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRocmVhZFNhZmVSZWZDb3VudGVkT2Jq
ZWN0Ojp+VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0Ojp+TWFpblRocmVhZFNh
ZmVSZWZDb3VudGVkT2JqZWN0KToKKwogMjAxOS0xMi0xMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggcHJlcGFyZS1DaGFuZ2VMb2cgYWJvdXQgSmF2
YVNjcmlwdCBhc3luYyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4
IDg3Zjg0NDIxMDFhMGRmN2ZkZjJlYzBkMTRiMTVmMDc2NDJhMzRlNzIuLmM5MTcwMzYzZWUzYjA0
NTBjNjMxMTNhYWE1OGI1ZDk2ZjYxMWJlNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dApAQCAtNjUsNiArNjUsOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL09w
dGlvblNldC5jcHAKICAgICBUZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAgICAgVGVzdHMvV1RGL1Bh
Y2tlZC5jcHAKKyAgICBUZXN0cy9XVEYvUGFja2VkUmVmLmNwcAorICAgIFRlc3RzL1dURi9QYWNr
ZWRSZWZQdHIuY3BwCiAgICAgVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCiAgICAgVGVzdHMvV1RG
L1ByaW9yaXR5UXVldWUuY3BwCiAgICAgVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNmNkY2E3MzViMGU0OWZmOWY0OWYxOGNhOGFjNzU0NWZkZTkw
ODExYi4uN2MyZjhmMzQzZTA2MjdkZGJjODIxMTRjZjFjZTAzMTdlODg1NGY4NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTk2Nyw2ICs5NjcsOCBAQAogCQlFMzVGQzdCMjIyQjgyQTczMDBG
MzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpT
TG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZG
QUFGIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9Owog
CQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4
QiAvKiBUaHJlYWRpbmcuY3BwICovOyB9OworCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyog
UGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOEQ2NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovOyB9OworCQlF
MzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5
QSAvKiBQYWNrZWRSZWZQdHIuY3BwICovOyB9OwogCQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcg
LyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzdFMjFCMjVCMzkwMDhDNjAwNyAvKiBVUkxQYXJzZXJU
ZXh0RW5jb2RpbmcuY3BwICovOyB9OwogCQlFM0ExRTc4MjIxQjI1QjdBMDA4QzYwMDcgLyogVVJM
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFF
NzgwMjFCMjVCNzkwMDhDNjAwNyAvKiBVUkwuY3BwICovOyB9OwogCQlFM0ExRTc4NTIxQjI1Qjkx
MDA4QzYwMDcgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzQTFFNzg0MjFCMjVCOTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3Bw
ICovOyB9OwpAQCAtMjQ5Miw2ICsyNDk0LDggQEAKIAkJRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4
IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAv
KiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhy
ZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDY1QzgyM0E0NUZB
OTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYWNrZWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzhE
NjVDOTIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJlZlB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJy
YXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYw
MDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNzU5LDYgKzM3NjMsOCBAQAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0
OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8q
IE9wdGlvblNldC5jcHAgKi8sCiAJCQkJRTMyQjU0OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tl
ZC5jcHAgKi8sCisJCQkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAg
Ki8sCisJCQkJRTM4RDY1QzkyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgKi8s
CiAJCQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAogCQkJ
CTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLywKIAkJCQkw
RkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLywKQEAgLTQ0NDgs
NiArNDQ1NCw4IEBACiAJCQkJMUE3N0JBQTMxRDlBRkZGQzAwNUZDNTY4IC8qIE9wdGlvblNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYwMjFEMEE1OTBDMDBGRUJDRjMgLyogT1NPYmpl
Y3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8q
IFBhY2tlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEg
LyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYz
RDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNTkxRDBB
NTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNFQzI1
NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZEJsYWNrVHJlZS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJl
Zi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiYzBkODRmOGJjZDg1Y2RhNmI1YjE5NjllNmY3OGE2YTVmYWQ5MWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwCkBA
IC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZi5oPgorI2luY2x1ZGUg
PHd0Zi9QYWNrZWRSZWZQdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFdURl9QYWNrZWRSZWYsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYt
Pm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+
IHJlZihhZG9wdFJlZihhKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZf
UGFja2VkUmVmLCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwor
ICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYg
PSBiOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEp
IHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQ
YWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0
cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0gYzsKKyAgICAgICAg
RVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxv
Z2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9IGFkb3B0UmVmKGIpOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAi
fCAiOworICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitzdGF0aWMgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYoUGFja2VkUmVm
PFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCit7CisgICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNl
KTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYo
cGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4oYSkpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCByZWYucHRyKCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxS
ZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBwYXNzV2l0aFJlZihiKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJp
dmVkUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkp
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZjxEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEp
OworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVm
KGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgZGVy
aXZlZFJlZmVyZW5jZS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5j
ZS5wdHIoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tl
ZFJlZiwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJi
Iik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAxKGEpOworICAgICAg
ICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIu
cHRyKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5w
dHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIucHRyKCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVm
KGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmPFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+
IHAyKGIpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7CisgICAgICAgIHN0ZDo6
c3dhcChwMSwgcDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLnB0cigpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdHJ1Y3QgUmVmQ2hlY2tpbmdSZWZMb2dnZXIg
OiBSZWZMb2dnZXIgeworICAgIFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUp
OworICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0IFBhY2tlZFJl
ZjxSZWZDaGVja2luZ1JlZkxvZ2dlcj4qIHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9OworfTsKKwor
c3RydWN0IERlcml2ZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6IFJlZkNoZWNraW5nUmVmTG9nZ2Vy
IHsKKyAgICBEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7Cit9
OworCitSZWZDaGVja2luZ1JlZkxvZ2dlcjo6UmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hh
ciogbmFtZSkKKyAgICA6IFJlZkxvZ2dlciB7IG5hbWUgfQoreworfQorCit2b2lkIFJlZkNoZWNr
aW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9n
KCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAiICI7CisgICAgUmVm
TG9nZ2VyOjpyZWYoKTsKK30KKwordm9pZCBSZWZDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYoKQor
eworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90
VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAiICI7CisgICAgUmVmTG9nZ2VyOjpkZXJlZigpOworfQor
CitEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcml2ZWRSZWZDaGVja2luZ1JlZkxvZ2dl
cihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogUmVmQ2hlY2tpbmdSZWZMb2dnZXIgeyBuYW1lIH0K
K3sKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBBc3NpZ25CZWZvcmVEZXJlZikKK3sKKyAgICBE
ZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkNoZWNraW5nUmVmTG9n
Z2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYygiYyIpOworCisg
ICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9ICZy
ZWY7CisgICAgICAgIHJlZiA9IGI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOwor
ICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmQ2hl
Y2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsK
KyAgICAgICAgYy5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGM7CisgICAgICAg
IGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBjLnNsb3RUb0NoZWNrID0gbnVsbHB0
cjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAi
fCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYykgc2xv
dD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWY8UmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
ICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYik7Cisg
ICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJl
Zi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmQ2hlY2tpbmdSZWZMb2dnZXI+
IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0g
YWRvcHRSZWYoYyk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWZQdHIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MTdmNjc4MThmMWMxMTE3NzBhNWFkNjFiYjA1ODY0OTFiYWRlZGVkCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNw
cApAQCAtMCwwICsxLDU5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBCYXNpYykKK3sKKyAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKKworICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IGVtcHR5OworICAg
IEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEVYUEVDVF9FUSgm
YS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+
IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMiA9IHAxOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
Mi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2
ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAy
ID0gcDE7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEp
IGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBh
Y2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9F
UShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gbnVs
bHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
K30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9SZWZQdHIpCit7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVm
TG9nZ2VyPiBwYXNzUmVmKGEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIg
PSBXVEZNb3ZlKHBhc3NSZWYpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBBZG9wdCkKK3sKKyAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IGVtcHR5
OworICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cihhZG9wdFJlZigmYSkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwg
QXNzaWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dn
ZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxS
ZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
ICAgICBwMSA9IHAyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVm
KGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwdHIgPSAmYjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
UHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwdHIgPSBhZG9wdFJlZigmYik7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAg
ICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgp
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
MSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIs
IHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHJlZihjKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwdHIu
Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgICAgICBwdHIgPSBhZG9wdFJlZigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRy
LmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAg
ICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVY
UEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
I2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24td2FybmluZy1vcHRpb24iCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLWFzc2lnbi1vdmVybG9hZGVkIgor
I2VuZGlmCisgICAgICAgIHB0ciA9IHB0cjsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNp
ZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChX
VEZfUGFja2VkUmVmUHRyLCBTd2FwKQoreworICAgIFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVm
TG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4g
cDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAg
ICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAg
ICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMi5nZXQoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihi
KSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitU
RVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQoreworICAgIFJlZkxvZ2dlciBh
KCJhIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHJlZlB0ciA9
ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiByZWYgPSByZWZQdHIucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmVs
ZWFzZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigi
YiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9n
Z2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEp
OworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAy
KCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdU
Rk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxS
ZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+
IHAyKCZjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9
IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihj
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1JlZlB0cjxSZWZMb2dnZXI+IGYxKFJl
ZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPigm
bG9nZ2VyKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZXR1cm5WYWx1ZSkKK3sKKyAg
ICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgZjEoYSk7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgYXV0byBwdHIgPSBmMShhKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQor
CitzdHJ1Y3QgQ29uc3RSZWZDb3VudGVkIDogUmVmQ291bnRlZDxDb25zdFJlZkNvdW50ZWQ+IHsK
KyAgICBzdGF0aWMgUmVmPENvbnN0UmVmQ291bnRlZD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb25zdFJlZkNvdW50ZWQpOyB9Cit9OworCitjb25zdCBDb25zdFJlZkNvdW50ZWQm
IHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOwor
fQorQ29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3VudGVkUmVmKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q29uc3RSZWZDb3VudGVkPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5z
dGFuY2UuZ2V0KCk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQ29uc3QpCit7CisgICAg
Ly8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3aXRob3V0IGFuIGVycm9yLgorICAg
IGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAgUGFja2VkUmVmPGNvbnN0
IENvbnN0UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7CisgICAgUGFja2VkUmVmUHRyPGNvbnN0
IENvbnN0UmVmQ291bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUGFja2VkUmVmPGNvbnN0IENvbnN0
UmVmQ291bnRlZD4gZCA9IHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIFBhY2tlZFJl
ZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVm
KCk7CisgICAgUGFja2VkUmVmUHRyPENvbnN0UmVmQ291bnRlZD4gZiA9IENvbnN0UmVmQ291bnRl
ZDo6Y3JlYXRlKCk7CisgICAgUGFja2VkUmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9
IGY7CisgICAgUGFja2VkUmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsKKyAgICBQ
YWNrZWRSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBpKHJldHVyblJlZkNvdW50ZWRSZWYoKSk7
Cit9CisKK3N0cnVjdCBSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciA6IFJlZkxvZ2dlciB7CisgICAg
UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CisgICAgdm9pZCByZWYo
KTsKKyAgICB2b2lkIGRlcmVmKCk7CisgICAgY29uc3QgUGFja2VkUmVmUHRyPFJlZlB0ckNoZWNr
aW5nUmVmTG9nZ2VyPiogc2xvdFRvQ2hlY2sgeyBudWxscHRyIH07Cit9OworCitSZWZQdHJDaGVj
a2luZ1JlZkxvZ2dlcjo6UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkK
KyAgICA6IFJlZkxvZ2dlciB7IG5hbWUgfQoreworfQorCitzdGF0aWMgY29uc3QgY2hhciogbG9n
Z2VyTmFtZShjb25zdCBSZWZQdHI8UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+JiBwb2ludGVyKQor
eworICAgIHJldHVybiBwb2ludGVyID8gJnBvaW50ZXItPm5hbWUgOiAibnVsbCI7Cit9CisKK3Zv
aWQgUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OnJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNr
KQorICAgICAgICBsb2coKSA8PCAic2xvdD0iIDw8IGxvZ2dlck5hbWUoKnNsb3RUb0NoZWNrKSA8
PCAiICI7CisgICAgUmVmTG9nZ2VyOjpyZWYoKTsKK30KKwordm9pZCBSZWZQdHJDaGVja2luZ1Jl
ZkxvZ2dlcjo6ZGVyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkg
PDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAiOworICAgIFJlZkxv
Z2dlcjo6ZGVyZWYoKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBBc3NpZ25CZWZvcmVE
ZXJlZikKK3sKKyAgICBSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9D
aGVjayA9ICZwMTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51
bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihi
KSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
ICZwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcHRyOworICAgICAgICBwdHIgPSAmYjsK
KyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sg
PSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1hIHJl
ZihiKSBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBhLnNs
b3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgYS5zbG90
VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9DaGVj
ayA9ICZwMTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgYS5zbG90VG9DaGVj
ayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsQmVm
b3JlRGVyZWYpCit7CisgICAgUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZlB0ciA9
ICZhOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZlB0cjsKKyAgICAgICAgcmVmUHRyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgIH0K
KworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVsbCBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7Cit9CisKKy8vIEZJWE1FOiBFbmFibGUgdGhlc2UgdGVzdHMgb25jZSBX
aW4gcGxhdGZvcm0gc3VwcG9ydHMgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuCisjaWYhIFBMQVRG
T1JNKFdJTikKKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRpYyBib29sIGlzRGVzdHJveWVkSW5N
YWluVGhyZWFkOworc3RydWN0IFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0IDogVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q+IHsKKyAgICBzdGF0aWMgUmVm
PFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KTsgfQorCisgICAgflRocmVhZFNhZmVSZWZD
b3VudGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkID0g
aXNNYWluVGhyZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0KK307CisKK3N0cnVj
dCBNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QgOiBUaHJlYWRTYWZlUmVmQ291bnRlZDxN
YWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1h
aW4+IHsKKyAgICBzdGF0aWMgUmVmPE1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdD4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3QpOyB9CisKKyAgICB+TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KCkKKyAgICB7Cisg
ICAgICAgIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH0KK307CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmVsZWFz
ZUluTm9uTWFpblRocmVhZCkKK3sKKyAgICBkb25lID0gZmFsc2U7CisgICAgVGhyZWFkOjpjcmVh
dGUoIiIsIFtvYmplY3QgPSBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKCldIHsg
fSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9G
QUxTRShpc0Rlc3Ryb3llZEluTWFpblRocmVhZCk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0
ciwgUmVsZWFzZUluTm9uTWFpblRocmVhZERlc3Ryb3lJbk1haW5UaHJlYWQpCit7CisgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFRo
cmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gTWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0
OjpjcmVhdGUoKV0geyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgRVhQRUNUX1RSVUUoaXNEZXN0cm95ZWRJbk1haW5UaHJlYWQpOworfQorCisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385658</attachid>
            <date>2019-12-13 16:51:00 -0800</date>
            <delta_ts>2019-12-13 17:00:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213165100.patch</filename>
            <type>text/plain</type>
            <size>70137</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjA3MWZjZTMzYzg1MjZkMjdhZjBiY2E4MDI4MDg3NmJhNjVmZWZkLi5kMGYwZjA3MDQ4ZDA3Mjcw
YTU1OWIwZTQ3ZGVkYWJiMGI1MWM1NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgTm90IHRvIGluY3JlYXNlIHNp
emVvZihBcnJheUJ1ZmZlciksIHdlIHVzZSBQYWNrZWRSZWZQdHIgaW4gQXJyYXlCdWZmZXIsIHdo
aWNoIGlzIFJlZlB0ciB3aGlsZSB0aGUgcG9pbnRlciBpcyBwYWNrZWQuIFRoaXMgZ2l2ZXMgdXMg
OCBieXRlcyB3aGljaCBpcworICAgICAgICBzdWl0YWJsZSB0byBwbGFjZSBJbmxpbmVXYXRjaHBv
aW50U2V0IHdpdGhvdXQgaW5jcmVhc2luZyBzaXplb2YoQXJyYXlCdWZmZXIpLiBXZSBhbHNvIGNv
bnZlcnQgRnVuY3Rpb248PiBpbiBBcnJheUJ1ZmZlciB0byBQYWNrZWRSZWZQdHI8U2hhcmVkVGFz
azw+PiwKKyAgICAgICAgYW5kIHNoYXJlIEdpZ2FjYWdlOjpmcmVlIGRlc3RydWN0b3IgYnkgbXVs
dGlwbGUgQXJyYXlCdWZmZXIuIFRoaXMgaXMgbWVtb3J5IGVmZmljaWVudCBzaW5jZSB0aGlzIGlz
IHRoZSBjb21tb24gY2FzZSwgYW5kIHdlIGNhbiBwYWNrIHRoaXMgZmllbGQgZWFzaWx5LgorCisg
ICAgICAgICogQVBJL0pTVHlwZWRBcnJheS5jcHA6CisgICAgICAgIChKU09iamVjdE1ha2VUeXBl
ZEFycmF5V2l0aEJ5dGVzTm9Db3B5KToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUFycmF5QnVmZmVy
V2l0aEJ5dGVzTm9Db3B5KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGRmZy9ERkdE
ZXNpcmVkV2F0Y2hwb2ludHMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5QnVmZmVyVmll
d1dhdGNocG9pbnRBZGFwdG9yOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyk6CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OnByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6On5T
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250
ZW50czo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJhbnNm
ZXJUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXIpOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6
Om5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKwogMjAxOS0xMi0xMyAgSmltIE1hc29uICA8
am1hc29uQGliaW54LmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJLaXRHVEsgYnVpbGQgaGFuZ3Mg
b24gZy1pci1zY2FubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjY2YzMDY1NmI0NDVjZmIzM2ZhNmJkY2RlMGRhYTViNTJh
ZDcyOTIuLmE1NTBhZjhjZjM4YzBiZDA1MTAyNDU3ZDU0NjFjNGY0ZTM1M2U3MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTktMTItMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUx
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgUGFja2VkUmVmIGFuZCBQYWNrZWRSZWZQdHIuIFRoZXkgYXJlIFJlZiBhbmQg
UmVmUHRyLCBidXQgaXRzIGludGVybmFsIHBvaW50ZXIgaXMgcGFja2VkLgorICAgICAgICBTbyB3
ZSBjYW4gcmVwcmVzZW50IHRoZW0gaW4gNiBieXRlcyB3aXRoIDEgYnl0ZSBhbGlnbm1lbnQuCisK
KyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYv
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BhY2tlZC5oOgorICAgICAgICAoV1RGOjph
bGlnbm9mKToKKyAgICAgICAgKiB3dGYvUGFja2VkUmVmLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5o
LgorICAgICAgICAqIHd0Zi9QYWNrZWRSZWZQdHIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oLgor
ICAgICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6UmVmUHRyOjpvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmUHRyOjp1bnNwZWNp
ZmllZEJvb2xUeXBlSW5zdGFuY2UgY29uc3QpOgorCiAyMDE5LTEyLTEzICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEZW55IG1hY2ggbG9va3Vw
IGFjY2VzcyB0byAiKi5hcHBsZS1leHRlbnNpb24tc2VydmljZSIgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJy
YXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4
IGViOWRjMzA2YjQ0ZmYzNTAxZmY2NDlkMjlmZmUxMjk0MTIyZDg1YmMuLjQ2MDM1YTlkMTZiZDll
MzU1OTVhY2FkOGJlNzIzM2FmY2UzMzEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVHlwZWRBcnJheS5jcHAKQEAgLTE4NCwxMCArMTg0LDEwIEBAIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZVR5cGVkQXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBl
ZEFycmF5CiAKICAgICB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUgPSBlbGVtZW50U2l6ZSh0b1R5
cGVkQXJyYXlUeXBlKGFycmF5VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgsIFs9XSh2b2lkKiBwKSB7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgsIGNy
ZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlmIChk
ZXN0cnVjdG9yKQogICAgICAgICAgICAgZGVzdHJ1Y3RvcihwLCBkZXN0cnVjdG9yQ29udGV4dCk7
Ci0gICAgfSk7CisgICAgfSkpOwogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjcmVhdGVUeXBlZEFy
cmF5KGdsb2JhbE9iamVjdCwgYXJyYXlUeXBlLCBXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCAv
IGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3Bl
LCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zMTIsMTAgKzMxMiwxMCBAQCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VBcnJheUJ1ZmZlcldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2b2lkKiBi
eXRlcwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUZyb21CeXRlcyhieXRlcywgYnl0ZUxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRv
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGJ5dGVMZW5ndGgs
IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlm
IChieXRlc0RlYWxsb2NhdG9yKQogICAgICAgICAgICAgYnl0ZXNEZWFsbG9jYXRvcihwLCBkZWFs
bG9jYXRvckNvbnRleHQpOwotICAgIH0pOworICAgIH0pKTsKIAogICAgIEpTQXJyYXlCdWZmZXIq
IGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBl
eGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDE2MWQ3MDVjYzJlM2M2MTllYzU0NGI3NjZlYjc0ZDI4YTg0Zjg4YzYu
LjNkZmRlNjM2ZDUyMDI0YTY2YjEwNzhjMzI2ODU1NTg2MmYwMzViYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03NTIsNyArNzUyLDYgQEAKIAkJMEZGQjkyMjAxNkQwMzNCNzAw
NTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3Ry
dWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGQzkyMTYxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzkyMTUxQjk0RkIz
RTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovOyB9OwogCQkwRkZDOTlEMTE4NEVD
OEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZG
Qzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
RkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmggKi87IH07CiAJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdD
U0VQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRkM5NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi87IH07CiAJCTBGRkZD
OTVDMTRFRjkwQUYwMEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NTAxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggKi87IH07CkBAIC0zMjUzLDggKzMyNTIsNiBAQAogCQkwRkZCODBCQjIwQTc5NDcwMDAw
NkFBRjYgLyogSklUQ29kZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUQ29kZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzky
MTUxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcm9wZXJ0eVR5cGVLZXkuaDsgcGF0aCA9IGRmZy9ERkdQ
cm9wZXJ0eVR5cGVLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5RDAx
ODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25zdGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
Qzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NGQVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NTRVBoYXNlLmNwcDsg
cGF0aCA9IGRmZy9ERkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02OTQzLDggKzY5NDAsNiBAQAogCQkJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0
eUNoZWNrTW9kZS5oICovLAogCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1
ZmZlci5jcHAgKi8sCiAJCQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
LmggKi8sCi0JCQkJMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldC5jcHAgKi8sCi0JCQkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8q
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICovLAogCQkJCTBGMzBGQjYwMURD
MkRFOTYwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggKi8sCiAJCQkJQTdBOEFG
MjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJQTdBOEFG
MjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovLApAQCAtODg4OCw3ICs4
ODgzLDYgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkM5OUQ1MTg0RUUz
MTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzBGQjYxMURDMkRFOTkwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBC
MzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKaW5kZXggNTNjY2M3NGY4MmQ5YmRlMjUzM2MyZjY5M2U2Njc2YTliZWYzMWI2
OC4uZmU1ZjUxOTNiZDU1MWI2NmI2Y2YxMmNmOTc1Yjk3ZTNiYjU0ZDJmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzAzLDcgKzcwMyw2IEBAIHByb2ZpbGVyL1Byb2ZpbGVyVUlE
LmNwcAogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKIHJ1bnRpbWUvQXJnTGlzdC5j
cHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCi1ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldC5jcHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmlu
ZGV4IGMyNDMxZjAzZmNlOTY3YzJmNmE3ZWU0MGFiZjNkNTYxNTU0NjMzYmUuLjA3YmFiZTczYjRk
ZTk1ZjY4NmZjZDBjMmI5MGZjMjUzYjk3ZDViYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHR3Jh
cGguaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0zOCwxOSArMzcsMTcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50
QWRhcHRvcjo6YWRkKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0FycmF5QnVmZmVyVmll
dyogdmlldywgQ29tbW9uRGF0YSYgY29tbW9uKQogewotICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+
dm0oKTsKKyAgICAvLyB2aWV3IGlzIGFscmVhZHkgZnJvemVuLiBJZiBpdCBpcyBkZWFsbG9jYXRl
ZCwgamV0dGlzb25pbmcgaGFwcGVucy4KICAgICBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQqIHdhdGNocG9pbnQgPSBudWxscHRyOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIHdhdGNocG9pbnQgPSBjb21t
b24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgfQotICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9Ci0gICAgICAgIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdX
YXRjaHBvaW50LT5zZXQoKS5hZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7Ci0gICAgY29kZUJsb2Nr
LT5hZGRDb25zdGFudChDb25jdXJyZW50SlNMb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spLCBuZXV0
ZXJpbmdXYXRjaHBvaW50KTsKKyAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB2aWV3LT5w
b3NzaWJseVNoYXJlZEJ1ZmZlcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5QnVmZmVyKTsK
ICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbmVlZCB0byBzZXQgdGhpcyB3YXRjaHBvaW50IGF0IGFs
bCBmb3Igc2hhcmVkIGJ1ZmZlcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NDEwOAotICAgIHZtLmhlYXAuYWRkUmVmZXJlbmNlKG5ldXRlcmluZ1dh
dGNocG9pbnQsIHZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCkpOworICAgIGFycmF5QnVmZmVy
LT5uZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCkuYWRkKFdURk1vdmUod2F0Y2hwb2ludCkpOwogfQog
CiB2b2lkIFN5bWJvbFRhYmxlQWRhcHRvcjo6YWRkKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAppbmRleCA3OTY0OTg1MzMxNjAzYzM4YmJhZWNlNDNiNDdhOGJhMDg3OWJkODcw
Li5iMzIwZjcwN2M5NWYxMjM5Mzg1MWJjM2IyYjJiNDJiOTU2ZGQwYmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTM5OSw2ICsxMzk5LDcgQEAgSlNBcnJheUJ1
ZmZlclZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcoSlNWYWx1ZSB2YWx1ZSkKICAgICBp
ZiAoIXZpZXctPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKKyAgICBmcmVlemUodmlldyk7CiAgICAgd2F0Y2hwb2ludHMoKS5hZGRM
YXppbHkodmlldyk7CiAgICAgcmV0dXJuIHZpZXc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggMDdiZGEzOGE2ZTIyOGFmZGQwNDFiMjE4
NjBjN2FmNDIzMTIzMzQ3NS4uM2QwZGMyNTE2MjE3MjU4M2M5MDI5ODFiZGRiZWY3YzA0YWE4MDg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApA
QCAtMjYsMTMgKzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKIAotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5o
IgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGlj
IFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPj4+IGRlc3RydWN0b3I7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgZGVzdHJ1Y3Rvci5j
b25zdHJ1Y3QoY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQqKT4oW10gKHZvaWQqIHApIHsgR2ln
YWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH0pKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7Cit9CisKIFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDog
bV9kYXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9y
KSkKQEAgLTQyLDggKzUxLDEwIEBAIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwKIAogU2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50czo6flNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKQogewotICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdl
dFVuc2FmZSgpKTsKKyAgICBpZiAobV9kZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiB3
ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTc2OTgKKyAgICAgICAgbV9kZXN0cnVjdG9yLT5ydW4obV9kYXRhLmdl
dFVuc2FmZSgpKTsKKyAgICB9CiB9CiAKIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVy
Q29udGVudHMoKQpAQCAtODQsMTUgKzk1LDE3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
Y2xlYXIoKQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OmRlc3Ryb3koKQogewotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Njk4Ci0gICAgbV9kZXN0cnVjdG9yKG1fZGF0YS5n
ZXRVbnNhZmUoKSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvcikgeworICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IHVzZSBnZXRVbnNhZmUgaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NzY5OAorICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEu
Z2V0VW5zYWZlKCkpOworICAgIH0KIH0KIAogdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNl
dCgpCiB7Ci0gICAgbV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07Ci0gICAgbV9zaGFyZWQg
PSBudWxscHRyOwogICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kZXN0cnVjdG9yID0gbnVs
bHB0cjsKKyAgICBtX3NoYXJlZCA9IG51bGxwdHI7CiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9
CiAKQEAgLTEyMywxMyArMTM2LDEzIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAKICAgICBt
X3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5C
eXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2
b2lkKiBwKSB7IEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHApOyB9OworICAg
IG1fZGVzdHJ1Y3RvciA9IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQogCiB2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6Om1ha2VTaGFyZWQoKQogewogICAgIG1fc2hhcmVkID0gYWRv
cHRSZWYobmV3IFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoZGF0YSgpLCBzaXplSW5CeXRlcygp
LCBXVEZNb3ZlKG1fZGVzdHJ1Y3RvcikpKTsKLSAgICBtX2Rlc3RydWN0b3IgPSBbXSAodm9pZCop
IHsgfTsKKyAgICBtX2Rlc3RydWN0b3IgPSBudWxscHRyOwogfQogCiB2b2lkIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCkBAIC0xNTgs
OSArMTcxLDkgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZm
ZXJDb250ZW50cyYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwogICAgIEFT
U0VSVChtX3NoYXJlZCk7Ci0gICAgb3RoZXIubV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07
Ci0gICAgb3RoZXIubV9zaGFyZWQgPSBtX3NoYXJlZDsKICAgICBvdGhlci5tX2RhdGEgPSBtX2Rh
dGE7CisgICAgb3RoZXIubV9kZXN0cnVjdG9yID0gbnVsbHB0cjsKKyAgICBvdGhlci5tX3NoYXJl
ZCA9IG1fc2hhcmVkOwogICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKTsKIH0KQEAgLTE5Nyw3ICsyMTAsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8gICBmcm9tIHRo
ZSBjYWdlLgogUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBjcmVhdGVG
cm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZyZWUo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH0pOworICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMo
ZGF0YSwgYnl0ZUxlbmd0aCwgcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwogfQogCiAv
LyBGSVhNRTogV2UgY2Fubm90IHVzZSB0aGlzIGV4Y2VwdCBpZiB0aGUgbWVtb3J5IGNvbWVzIGZy
b20gdGhlIGNhZ2UuCkBAIC0zNzEsNiArMzg0LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6dHJhbnNm
ZXJUbyhWTSYgdm0sIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKIAogICAgIG1fY29udGVu
dHMudHJhbnNmZXJUbyhyZXN1bHQpOwogICAgIG5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRy
YW5zZmVyKHZtKTsKKyAgICBtX25ldXRlcmluZ1dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgIkFy
cmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzgx
LDYgKzM5NSw3IEBAIHZvaWQgQXJyYXlCdWZmZXI6Om5ldXRlcihWTSYgdm0pCiAgICAgQXJyYXlC
dWZmZXJDb250ZW50cyB1bnVzZWQ7CiAgICAgbV9jb250ZW50cy50cmFuc2ZlclRvKHVudXNlZCk7
CiAgICAgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIodm0pOworICAgIG1fbmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5maXJlQWxsKHZtLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJl
ZCIpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZU
cmFuc2ZlcihWTSYgdm0pCkBAIC0zODksOCArNDA0LDYgQEAgdm9pZCBBcnJheUJ1ZmZlcjo6bm90
aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIoVk0mIHZtKQogICAgICAgICBKU0NlbGwq
IGNlbGwgPSBpbmNvbWluZ1JlZmVyZW5jZUF0KGkpOwogICAgICAgICBpZiAoSlNBcnJheUJ1ZmZl
clZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIGNlbGwp
KQogICAgICAgICAgICAgdmlldy0+bmV1dGVyKCk7Ci0gICAgICAgIGVsc2UgaWYgKEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nhc3Q8QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4odm0sIGNlbGwpKQotICAgICAgICAgICAg
d2F0Y2hwb2ludC0+ZmlyZUFsbCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZTZmNTVjZTBiZDk4OWRmYjE1ZDY2NDJkNmY4
YWI1YzNiZjQ1MmZkOS4uZDYwYjVjZmI4NjhmOTJmZmM2NTRiY2RiNWE5Y2I1NWYzMGIxOThiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0yNywx
MCArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCIKICNpbmNs
dWRlICJHQ0luY29taW5nUmVmQ291bnRlZC5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNp
bmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDYsOCBA
QCBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTQXJy
YXlCdWZmZXI7CiAKLXR5cGVkZWYgRnVuY3Rpb248dm9pZCh2b2lkKik+IEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uOwordXNpbmcgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+OwordXNpbmcgUGFja2VkQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+
OwogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKQEAgLTU2LDcg
KzU5LDcgQEAgY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckMKIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0
YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47
CiAgICAgRGF0YVR5cGUgbV9kYXRhOwotICAgIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
IG1fZGVzdHJ1Y3RvcjsKKyAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBt
X2Rlc3RydWN0b3I7CiAgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKQEAgLTk4LDEw
ICsxMDEsMTAgQEAgY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgdm9pZCBjb3B5VG8o
QXJyYXlCdWZmZXJDb250ZW50cyYpOwogICAgIHZvaWQgc2hhcmVXaXRoKEFycmF5QnVmZmVyQ29u
dGVudHMmKTsKIAotICAgIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3Rv
cjsKLSAgICBSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7CiAgICAg
dXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOworICAgIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKKyAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7CiAgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsK
IH07CiAKQEAgLTE0OCw2ICsxNTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0lu
Y29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgdm9pZCBuZXV0ZXIoVk0mKTsK
ICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0KKyAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBuZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcnJheUJ1ZmZlciwgbV9jb250ZW50
cykgKyBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlCdWZmZXJDb250ZW50cywgbV9kYXRhKTsgfQogCkBA
IC0xNjUsMTQgKzE2OSwxNSBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5n
UmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogICAgIHZvaWQgbm90aWZ5SW5jb21taW5nUmVmZXJl
bmNlc09mVHJhbnNmZXIoVk0mKTsKIAogICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50
czsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldCB7IElz
V2F0Y2hlZCB9OworcHVibGljOgorICAgIFdlYWs8SlNBcnJheUJ1ZmZlcj4gbV93cmFwcGVyOwor
cHJpdmF0ZToKICAgICBDaGVja2VkPHVuc2lnbmVkPiBtX3BpbkNvdW50OwogICAgIGJvb2wgbV9p
c1dhc21NZW1vcnk7CiAgICAgLy8gbV9sb2NrZWQgPT0gdHJ1ZSBtZWFucyB0aGF0IHNvbWUgQVBJ
IHVzZXIgZmV0Y2hlZCBtX2NvbnRlbnRzIGRpcmVjdGx5IGZyb20gYSBUeXBlZEFycmF5IG9iamVj
dCwKICAgICAvLyB0aGUgYnVmZmVyIGlzIGJhY2tlZCBieSBhIFdlYkFzc2VtYmx5Lk1lbW9yeSwg
b3IgaXMgYSBTaGFyZWRBcnJheUJ1ZmZlci4KICAgICBib29sIG1fbG9ja2VkOwotCi1wdWJsaWM6
Ci0gICAgV2VhazxKU0FycmF5QnVmZmVyPiBtX3dyYXBwZXI7CiB9OwogCiB2b2lkKiBBcnJheUJ1
ZmZlcjo6ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIxNmQ4MTJhNGJjNTdjOGNlZjNhYjdhY2E3ZDMzOGM1
YzBjOTNiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnRTZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKLQotI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OnNfaW5mbyA9IHsKLSAgICAiQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dCkKLX07Ci0KLUFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0
UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAg
IHN0YXRpY19jYXN0PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KGNlbGwpLT5B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQoKTsKLX0KLQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiByZXN1bHQgPSBuZXcKLSAgICAgICAg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+
KHZtLmhlYXApKQotICAgICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQodm0p
OwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLVN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwg
anNOdWxsKCksIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19
Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKCkKLXsK
LSAgICBtX3NldC0+ZmlyZUFsbCh2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM3MzdjY2U1OGMxYzk3ZDExNWE2MDlj
ZGIzMGQwMTExOTQxMjNlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIERFQ0xBUkVfSU5GTzsKLSAg
ICAKLSAgICBzdGF0aWMgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBjcmVhdGUo
Vk0mKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIAotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOwotICAgIAotICAgIFdhdGNocG9pbnRTZXQm
IHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9Ci0gICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KFZNJik7Ci0gICAgCi0gICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWYw
YWE0ZTczNWQ2ZDhiYjQ4OWU4MDM4MWQwMGI2NTEyZmVlZjgzMC4uZjUzOWY1MDViNmE4MTU3NDI1
YzE5Y2FmYWJiNGI2ODk1Y2M3ZmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlZNLmgiCiAKICNpbmNsdWRlICJBcmdMaXN0
LmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5j
bHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgogI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgpAQCAtNDY2LDcgKzQ2NSw2IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNw
YXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
KSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMs
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVu
bGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWYyMDE5ODBlNTBhOTNiYjYwMThm
YjM2ZGJkZjVmYjE0NDg3ZTQzMS4uYjk0MzliNjk5YjM3NmNlN2YyYTUzNmFmOGIxMjBiZmNhODFk
NzcyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02NjgsNyArNjY4LDYgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFp
blN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VBcnJheVZhbHVlTWFwU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0
cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRXZhbENv
ZGVCbG9ja1N0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKaW5kZXggM2Y4YmUzNmVmNmZiMDFjNmQ3MGQ3M2U4
MzNkZjI2NTE0YzUxMDlhYS4uMTNjNjJmNjgzNDA2NjdhNzQxODVlODhhZmJjNzg5YmI3ZjcwMmMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseU1lbW9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNBcnJheUJ1ZmZlciogSlNXZWJBc3Nl
bWJseU1lbW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IAogICAgIC8vIFdlIGNhbid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBh
IGNvcHkgY29uc3RydWN0b3IuLi4KICAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1v
cnkgPSBtX21lbW9yeS5nZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBbcHJvdGVjdGVkTWVt
b3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsgfTsKKyAgICBhdXRvIGRl
c3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQodm9pZCopPihbcHJvdGVjdGVkTWVtb3J5
ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsgfSk7CiAgICAgbV9idWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKG1lbW9yeSgpLm1lbW9yeSgpLCBtZW1vcnko
KS5zaXplKCksIFdURk1vdmUoZGVzdHJ1Y3RvcikpOwogICAgIG1fYnVmZmVyLT5tYWtlV2FzbU1l
bW9yeSgpOwogICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgbV9idWZmZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlOGVjMTU5YTcxNDRmNjFhZDU4MGU1NjA1
ZWM0MjdlNjljMzk4OGUuLjViZDdhYjQzZGUwNmY4OTNjMTY0ZDU5OWM2Y2M0ZjVmYjE3YjA1YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjczLDYgKzY3
Myw4IEBACiAJCUUzNENEMEQwMjI4MTBBMDIwMDIwRDI5OSAvKiBQYWNrZWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY0MjEy
N0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1
Q0MyM0E0NDVFRTAwOERENEM4IC8qIFBhY2tlZFJlZlB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNr
ZWRSZWZQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkQyMEM5MDk1
MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdvcmtlclBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVUaW1lQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA3Nyw2ICsxMDc5LDggQEAKIAkJCQlBOEE0NzJEQjE1MUE4
MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuaCAqLywKIAkJCQlFMzRDRDBEMDIyODEwQTAy
MDAyMEQyOTkgLyogUGFja2VkLmggKi8sCiAJCQkJQThBNDcyREYxNTFBODI1QjAwNDEyM0ZGIC8q
IFBhY2tlZEludFZlY3Rvci5oICovLAorCQkJCUUzNjg5NUNCMjNBNDQ1Q0QwMDhERDRDOCAvKiBQ
YWNrZWRSZWYuaCAqLywKKwkJCQlFMzY4OTVDQzIzQTQ0NUVFMDA4REQ0QzggLyogUGFja2VkUmVm
UHRyLmggKi8sCiAJCQkJQThBNDcyRTAxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VBbGxvY2F0aW9u
LmggKi8sCiAJCQkJQThBNDcyRTMxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgKi8s
CiAJCQkJQThBNDcyRTQxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCBhZmNjNjBlMjIwMzI1Y2IxMDlmZWQ5YWVmNDgxYmQ5Yzk2ZjM4ZmY1
Li5kYWU0YTcxYjI4ZDEzMDQyNGMwYmQ3MzFiZTQxNjQzZjA1MmIzZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dApAQCAtMTU1LDYgKzE1NSw4IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBP
cHRpb25hbC5oCiAgICAgT3JkZXJNYWtlci5oCiAgICAgUGFja2VkLmgKKyAgICBQYWNrZWRSZWYu
aAorICAgIFBhY2tlZFJlZlB0ci5oCiAgICAgUGFja2VkSW50VmVjdG9yLmgKICAgICBQYWdlQWxs
b2NhdGlvbi5oCiAgICAgUGFnZUJsb2NrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKaW5kZXggODM5ZDNjODczMTVlNTAxMDhi
Yzk3MTgwNmNhOTQ1OThjMzEwMzllYi4uYjIyZmM3NjFkNDI5NzRiOTgxMjViYjdlN2QxYzJkMWY5
YTU3ODMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFja2VkLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGFja2VkLmgKQEAgLTE2Myw2ICsxNjMsMTAgQEAgY2xhc3MgUGFja2VkQWxpZ25l
ZFB0ciB7CiAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIChQYWNrZWRBbGlnbmVkUHRyOjoqVW5z
cGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGdldCgpID8gJlBhY2tlZEFsaWduZWRQdHI6Om1fc3RvcmFnZSA6IG51bGxw
dHI7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7
IH0KIAogICAgIFBhY2tlZEFsaWduZWRQdHImIG9wZXJhdG9yPShUKiB2YWx1ZSkKQEAgLTE3Miw5
ICsxNzYsOSBAQCBjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBVPgotICAgIFQgZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIFQqIGV4Y2hhbmdl
KFUmJiBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIFQgb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAg
ICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKICAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdW
YWx1ZSkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQpAQCAtMTg5LDE1ICsxOTMs
MTUgQEAgY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KICAg
ICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgVCB0MSA9IGdldCgpOwot
ICAgICAgICBUIHQyID0gb3RoZXIuZ2V0KCk7CisgICAgICAgIFQqIHQxID0gZ2V0KCk7CisgICAg
ICAgIFQqIHQyID0gb3RoZXIuZ2V0KCk7CiAgICAgICAgIHNldCh0Mik7CiAgICAgICAgIG90aGVy
LnNldCh0MSk7CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKFQmIHQyKQorICAgIHZvaWQgc3dhcChU
KiB0MikKICAgICB7Ci0gICAgICAgIFQgdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDEgPSBnZXQo
KTsKICAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CiAgICAgICAgIHNldCh0MSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
YWNrZWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGVjZGZmOGQ3NmUzN2M3ZjM5ZmI4YWQ5ZDg3N2M2OTA1
MzQyMWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkUmVmLmgKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2lu
ZyBQYWNrZWRSZWYgPSBSZWY8VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK3VzaW5nIFdURjo6UGFja2VkUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGFja2VkUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMjQ3ZDdkZmI2NTdmZWEzZWU3NjAzZjA3MjI3NDI2NzUwZDc2ZDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkUmVmUHRyLmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWZQ
dHIgPSBSZWZQdHI8VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKK3VzaW5nIFdURjo6UGFja2VkUmVmUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCA1YmVjNmM3ZWUyMGU4Njcy
MzUyNzkzMDcyOGU4Y2YxODNkYjliNDhiLi42ZDRjNjQ0NGU3ZWFmMWFhMWVhYWY0MzI5YTVmNjk4
ZjA5M2VkMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtODEsOCArODEsOCBAQCBjbGFzcyBSZWZQdHIgewogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CiAKICAgICAvLyBUaGlz
IGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBi
dXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBUKiAoUmVmUHRyOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6bV9wdHIgOiBudWxscHRyOyB9CisgICAg
dXNpbmcgVW5zcGVjaWZpZWRCb29sVHlwZSA9IHZvaWQgKFJlZlB0cjo6KikoKSBjb25zdDsKKyAg
ICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAm
UmVmUHRyOjp1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFuY2UgOiBudWxscHRyOyB9CiAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQogICAgIApA
QCAtMTAyLDYgKzEwMiw4IEBAIGNsYXNzIFJlZlB0ciB7CiAgICAgUmVmUHRyIGNvcHlSZWYoKSBj
b25zdCAmIFdBUk5fVU5VU0VEX1JFVFVSTiB7IHJldHVybiBSZWZQdHIobV9wdHIpOyB9CiAKIHBy
aXZhdGU6CisgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFuY2UoKSBjb25zdCB7IH0K
KwogICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwgUHRyVHJhaXRzPihUKik7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5kIGNsYXNzIFJlZlB0cjsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg4OWUzNWI1
NjRlMGY1ZDQ2MTNlOGI0NmRmM2I4NjM4YTM3ZjcwMjcuLmNhYzc3NzE5ZjNhNDE5ZDIyMTc4ZTk4
NmMxNjk1YjU2N2ZiODdhMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNTE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgUGFja2VkUmVmIGFuZCBQYWNrZWRSZWZQdHIuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJlZi5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNzV2l0
aFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpSZWZDaGVja2luZ1JlZkxvZ2dlcjo6UmVm
Q2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UmVmQ2hlY2tpbmdS
ZWZMb2dnZXI6OnJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpSZWZDaGVja2luZ1JlZkxv
Z2dlcjo6ZGVyZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVyaXZlZFJlZkNoZWNraW5n
UmVmTG9nZ2VyOjpEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJlZlB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcjo6UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6bG9nZ2VyTmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyOjpkZXJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUaHJl
YWRTYWZlUmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0Ojp+VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Qp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWFpblRocmVhZFNhZmVSZWZDb3Vu
dGVkT2JqZWN0Ojp+TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KToKKwogMjAxOS0xMi0x
MyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggcHJl
cGFyZS1DaGFuZ2VMb2cgYWJvdXQgSmF2YVNjcmlwdCBhc3luYyBmdW5jdGlvbnMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDg3Zjg0NDIxMDFhMGRmN2ZkZjJlYzBkMTRiMTVmMDc2
NDJhMzRlNzIuLmM5MTcwMzYzZWUzYjA0NTBjNjMxMTNhYWE1OGI1ZDk2ZjYxMWJlNTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNjUsNiArNjUsOCBAQCBzZXQoVGVzdFdURl9T
T1VSQ0VTCiAgICAgVGVzdHMvV1RGL09wdGlvblNldC5jcHAKICAgICBUZXN0cy9XVEYvT3B0aW9u
YWwuY3BwCiAgICAgVGVzdHMvV1RGL1BhY2tlZC5jcHAKKyAgICBUZXN0cy9XVEYvUGFja2VkUmVm
LmNwcAorICAgIFRlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwCiAgICAgVGVzdHMvV1RGL1Bhcmtp
bmdMb3QuY3BwCiAgICAgVGVzdHMvV1RGL1ByaW9yaXR5UXVldWUuY3BwCiAgICAgVGVzdHMvV1RG
L1JlZEJsYWNrVHJlZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmNkY2E3MzViMGU0
OWZmOWY0OWYxOGNhOGFjNzU0NWZkZTkwODExYi4uN2MyZjhmMzQzZTA2MjdkZGJjODIxMTRjZjFj
ZTAzMTdlODg1NGY4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk2Nyw2ICs5NjcsOCBA
QAogCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2Nr
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RkM3
QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLzsgfTsK
IAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJF
IC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhy
ZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovOyB9OworCQlFMzhE
NjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQ
YWNrZWRSZWYuY3BwICovOyB9OworCQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2Vk
UmVmUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwICovOyB9OwogCQlF
M0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzdFMjFCMjVC
MzkwMDhDNjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwICovOyB9OwogCQlFM0ExRTc4
MjIxQjI1QjdBMDA4QzYwMDcgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzgwMjFCMjVCNzkwMDhDNjAwNyAvKiBVUkwuY3BwICov
OyB9OwogCQlFM0ExRTc4NTIxQjI1QjkxMDA4QzYwMDcgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzg0MjFCMjVCOTEw
MDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwICovOyB9OwpAQCAtMjQ5Miw2ICsyNDk0LDggQEAKIAkJ
RTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTG9ja1Rha2VzV2ViVGhy
ZWFkTG9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NzAyMEM5MDk4
MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWRSZWYuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzhENjVDOTIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVm
UHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJlZlB0
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTUzRjk1MUYyQ0YzMjEwMEE3
NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4QkMwRjIwNDFD
NzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlclRleHRFbmNvZGlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzU5LDYgKzM3NjMsOCBAQAog
CQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1
MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJRTMyQjU0OTEy
MjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi8sCisJCQkJRTM4RDY1QzgyM0E0NUZBOTAw
NjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8sCisJCQkJRTM4RDY1QzkyM0E0NUZBOTAwNjNENjlB
IC8qIFBhY2tlZFJlZlB0ci5jcHAgKi8sCiAJCQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8q
IFBhcmtpbmdMb3QuY3BwICovLAogCQkJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlv
cml0eVF1ZXVlLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxh
Y2tUcmVlLmNwcCAqLywKQEAgLTQ0NDgsNiArNDQ1NCw4IEBACiAJCQkJMUE3N0JBQTMxRDlBRkZG
QzAwNUZDNTY4IC8qIE9wdGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYwMjFE
MEE1OTBDMDBGRUJDRjMgLyogT1NPYmplY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMy
QjU0OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
MzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RGNTkxRDBBNTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVl
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJl
ZEJsYWNrVHJlZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9QYWNrZWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiYzBkODRmOGJjZDg1Y2RhNmI1YjE5Njll
NmY3OGE2YTVmYWQ5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9QYWNrZWRSZWYuY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8d3Rm
L1BhY2tlZFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9QYWNrZWRSZWYsIEJhc2ljKQoreworICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9n
Z2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5h
bWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBBc3NpZ25tZW50KQoreworICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZl
ZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+
IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICByZWYgPSBiOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5w
dHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgcmVmID0gYzsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAg
ICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihj
KSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9IGFk
b3B0UmVmKGIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkg
fCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBh
Y2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRy
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdGF0aWMgUGFja2VkUmVmPFJlZkxvZ2dl
cj4gcGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCit7CisgICAg
cmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBSZXR1
cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIg
YigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQ
YWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYocGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4o
YSkpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYg
PSBwYXNzV2l0aFJlZihiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJl
ZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQ
YWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxEZXJpdmVkUmVmTG9n
Z2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBi
YXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVyZW5jZS5wdHIoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgi
YSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxS
ZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMihiKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIu
cHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcDEoYSk7CisgICAg
ICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBw
Mi5wdHIoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBFWFBFQ1RfRVEo
JmIsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5wdHIoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8
IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdHJ1
Y3QgUmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgeworICAgIFJlZkNoZWNraW5nUmVm
TG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJl
ZigpOworICAgIGNvbnN0IFBhY2tlZFJlZjxSZWZDaGVja2luZ1JlZkxvZ2dlcj4qIHNsb3RUb0No
ZWNrIHsgbnVsbHB0ciB9OworfTsKKworc3RydWN0IERlcml2ZWRSZWZDaGVja2luZ1JlZkxvZ2dl
ciA6IFJlZkNoZWNraW5nUmVmTG9nZ2VyIHsKKyAgICBEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dn
ZXIoY29uc3QgY2hhciogbmFtZSk7Cit9OworCitSZWZDaGVja2luZ1JlZkxvZ2dlcjo6UmVmQ2hl
Y2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IFJlZkxvZ2dlciB7IG5hbWUg
fQoreworfQorCit2b2lkIFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChz
bG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0
KCkubmFtZSA8PCAiICI7CisgICAgUmVmTG9nZ2VyOjpyZWYoKTsKK30KKwordm9pZCBSZWZDaGVj
a2luZ1JlZkxvZ2dlcjo6ZGVyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAg
bG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAiICI7CisgICAg
UmVmTG9nZ2VyOjpkZXJlZigpOworfQorCitEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRl
cml2ZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogUmVmQ2hl
Y2tpbmdSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBBc3Np
Z25CZWZvcmVEZXJlZikKK3sKKyAgICBEZXJpdmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIp
OworICAgIFJlZkNoZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmQ2hlY2tp
bmdSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmQ2hlY2tp
bmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAg
ICAgICAgYi5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGI7CisgICAgICAgIGEu
c2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1i
IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgewor
ICAgICAgICBQYWNrZWRSZWY8UmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAg
ICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgYy5zbG90VG9DaGVjayA9ICZyZWY7Cisg
ICAgICAgIHJlZiA9IGM7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAg
ICBjLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRy
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSB8IHNsb3Q9YSByZWYoYykgc2xvdD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmQ2hlY2tpbmdS
ZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAg
ICAgcmVmID0gYWRvcHRSZWYoYik7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOwor
ICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWY8UmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNr
ID0gJnJlZjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYyk7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1j
IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUGFja2VkUmVmUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTQzYjMxZTIyYjc5MzVmNDQzNTY3ZGIx
Y2U2ZjYyNWNjMTc0OGIxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcApAQCAtMCwwICsxLDU5OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUg
IlV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZi5oPgorI2luY2x1ZGUg
PHd0Zi9QYWNrZWRSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQmFzaWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CisKKyAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAgICAgICBFWFBFQ1RfRVEoJmEubmFt
ZSwgJnB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyID0gJmE7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRy
PFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIg
PSBwMTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkg
ZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0
ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAg
ICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVm
TG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAx
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRS
ZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVs
bHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7
CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisK
K1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQoreworICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dl
cj4gcGFzc1JlZihhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RG
TW92ZShwYXNzUmVmKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQWRvcHQpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisKKyAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
ImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFzc2ln
bm1lbnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIo
ImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9n
Z2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAg
cDEgPSBwMjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBk
ZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxS
ZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOworICAgICAg
ICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAg
cHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgRVhQRUNU
X0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYo
YykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgcHRyID0gYWRvcHRSZWYoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHB0ci5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXdhcm5pbmctb3B0aW9uIgorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1hc3NpZ24tb3ZlcmxvYWRlZCIKKyNlbmRp
ZgorICAgICAgICBwdHIgPSBwdHI7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSB8IHJlZihhKSBkZXJlZihhKSB8IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYgQ09N
UElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1Bh
Y2tlZFJlZlB0ciwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dl
ciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7Cisg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBh
Y2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIu
Z2V0KCkpOworICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8
IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChX
VEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsK
KyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2Up
Cit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsK
KyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
UHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4g
cDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVm
UHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0
ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAg
ICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIs
IHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3Zl
KHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
UShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9n
Z2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigm
Yyk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEo
JmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZN
b3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitSZWZQdHI8UmVmTG9nZ2VyPiBmMShSZWZMb2dn
ZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4oJmxvZ2dl
cik7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGYxKGEpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gZjEoYSk7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworc3Ry
dWN0IENvbnN0UmVmQ291bnRlZCA6IFJlZkNvdW50ZWQ8Q29uc3RSZWZDb3VudGVkPiB7CisgICAg
c3RhdGljIFJlZjxDb25zdFJlZkNvdW50ZWQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29uc3RSZWZDb3VudGVkKTsgfQorfTsKKworY29uc3QgQ29uc3RSZWZDb3VudGVkJiByZXR1
cm5Db25zdFJlZkNvdW50ZWRSZWYoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb25z
dFJlZkNvdW50ZWQ+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKK30KK0Nv
bnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNl
LmdldCgpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIENvbnN0KQoreworICAgIC8vIFRo
aXMgdGVzdCBwYXNzZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBhbiBlcnJvci4KKyAgICBhdXRv
IGEgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAgIFBhY2tlZFJlZjxjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGIgPSBXVEZNb3ZlKGEpOworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOworICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBQYWNrZWRSZWZQdHI8
Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOwor
ICAgIFBhY2tlZFJlZlB0cjxDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNy
ZWF0ZSgpOworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwor
ICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUGFja2Vk
UmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOworfQor
CitzdHJ1Y3QgUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgeworICAgIFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVmKCk7Cisg
ICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0IFBhY2tlZFJlZlB0cjxSZWZQdHJDaGVja2luZ1Jl
ZkxvZ2dlcj4qIHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9OworfTsKKworUmVmUHRyQ2hlY2tpbmdS
ZWZMb2dnZXI6OlJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAg
OiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGxvZ2dlck5h
bWUoY29uc3QgUmVmUHRyPFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiYgcG9pbnRlcikKK3sKKyAg
ICByZXR1cm4gcG9pbnRlciA/ICZwb2ludGVyLT5uYW1lIDogIm51bGwiOworfQorCit2b2lkIFJl
ZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAg
ICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAi
OworICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQgUmVmUHRyQ2hlY2tpbmdSZWZMb2dn
ZXI6OmRlcmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAgICAgIGxvZygpIDw8ICJz
bG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hlY2spIDw8ICIgIjsKKyAgICBSZWZMb2dnZXI6
OmRlcmVmKCk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYp
Cit7CisgICAgUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZlB0ckNoZWNr
aW5nUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sg
PSAmcDE7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRy
OworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBz
bG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcHRy
OworICAgICAgICBiLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgcHRyID0gJmI7CisgICAg
ICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVs
bHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikg
c2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgYS5zbG90VG9D
aGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZQdHJDaGVj
a2luZ1JlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAm
cDE7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHJlZihiKSB8IHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbEJlZm9yZURl
cmVmKQoreworICAgIFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsK
KyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWZQdHI7CisgICAgICAgIHJlZlB0ci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworfQorCisvLyBGSVhNRTogRW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgV2luIHBs
YXRmb3JtIHN1cHBvcnRzIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bgorI2lmISBQTEFURk9STShX
SU4pCisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgYm9vbCBpc0Rlc3Ryb3llZEluTWFpblRo
cmVhZDsKK3N0cnVjdCBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCA6IFRocmVhZFNhZmVSZWZD
b3VudGVkPFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiB7CisgICAgc3RhdGljIFJlZjxUaHJl
YWRTYWZlUmVmQ291bnRlZE9iamVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
aHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk7IH0KKworICAgIH5UaHJlYWRTYWZlUmVmQ291bnRl
ZE9iamVjdCgpCisgICAgeworICAgICAgICBpc0Rlc3Ryb3llZEluTWFpblRocmVhZCA9IGlzTWFp
blRocmVhZCgpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTWFp
blRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0IDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWFpblRo
cmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7
CisgICAgc3RhdGljIFJlZjxNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KTsg
fQorCisgICAgfk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCgpCisgICAgeworICAgICAg
ICBpc0Rlc3Ryb3llZEluTWFpblRocmVhZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9Cit9OworCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VJbk5v
bk1haW5UaHJlYWQpCit7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIi
LCBbb2JqZWN0ID0gVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZSgpXSB7IH0pOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uo
aXNEZXN0cm95ZWRJbk1haW5UaHJlYWQpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJl
bGVhc2VJbk5vbk1haW5UaHJlYWREZXN0cm95SW5NYWluVGhyZWFkKQoreworICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBUaHJlYWQ6
OmNyZWF0ZSgiIiwgW29iamVjdCA9IE1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6Y3Jl
YXRlKCldIHsgfSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IEVYUEVDVF9UUlVFKGlzRGVzdHJveWVkSW5NYWluVGhyZWFkKTsKK30KKworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385661</attachid>
            <date>2019-12-13 17:00:25 -0800</date>
            <delta_ts>2019-12-13 17:14:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213170025.patch</filename>
            <type>text/plain</type>
            <size>71760</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjA3MWZjZTMzYzg1MjZkMjdhZjBiY2E4MDI4MDg3NmJhNjVmZWZkLi5kMGYwZjA3MDQ4ZDA3Mjcw
YTU1OWIwZTQ3ZGVkYWJiMGI1MWM1NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgTm90IHRvIGluY3JlYXNlIHNp
emVvZihBcnJheUJ1ZmZlciksIHdlIHVzZSBQYWNrZWRSZWZQdHIgaW4gQXJyYXlCdWZmZXIsIHdo
aWNoIGlzIFJlZlB0ciB3aGlsZSB0aGUgcG9pbnRlciBpcyBwYWNrZWQuIFRoaXMgZ2l2ZXMgdXMg
OCBieXRlcyB3aGljaCBpcworICAgICAgICBzdWl0YWJsZSB0byBwbGFjZSBJbmxpbmVXYXRjaHBv
aW50U2V0IHdpdGhvdXQgaW5jcmVhc2luZyBzaXplb2YoQXJyYXlCdWZmZXIpLiBXZSBhbHNvIGNv
bnZlcnQgRnVuY3Rpb248PiBpbiBBcnJheUJ1ZmZlciB0byBQYWNrZWRSZWZQdHI8U2hhcmVkVGFz
azw+PiwKKyAgICAgICAgYW5kIHNoYXJlIEdpZ2FjYWdlOjpmcmVlIGRlc3RydWN0b3IgYnkgbXVs
dGlwbGUgQXJyYXlCdWZmZXIuIFRoaXMgaXMgbWVtb3J5IGVmZmljaWVudCBzaW5jZSB0aGlzIGlz
IHRoZSBjb21tb24gY2FzZSwgYW5kIHdlIGNhbiBwYWNrIHRoaXMgZmllbGQgZWFzaWx5LgorCisg
ICAgICAgICogQVBJL0pTVHlwZWRBcnJheS5jcHA6CisgICAgICAgIChKU09iamVjdE1ha2VUeXBl
ZEFycmF5V2l0aEJ5dGVzTm9Db3B5KToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUFycmF5QnVmZmVy
V2l0aEJ5dGVzTm9Db3B5KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGRmZy9ERkdE
ZXNpcmVkV2F0Y2hwb2ludHMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5QnVmZmVyVmll
d1dhdGNocG9pbnRBZGFwdG9yOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyk6CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OnByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6On5T
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250
ZW50czo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJhbnNm
ZXJUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXIpOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6
Om5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKwogMjAxOS0xMi0xMyAgSmltIE1hc29uICA8
am1hc29uQGliaW54LmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJLaXRHVEsgYnVpbGQgaGFuZ3Mg
b24gZy1pci1zY2FubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjY2YzMDY1NmI0NDVjZmIzM2ZhNmJkY2RlMGRhYTViNTJh
ZDcyOTIuLmE1NTBhZjhjZjM4YzBiZDA1MTAyNDU3ZDU0NjFjNGY0ZTM1M2U3MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTktMTItMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUx
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgUGFja2VkUmVmIGFuZCBQYWNrZWRSZWZQdHIuIFRoZXkgYXJlIFJlZiBhbmQg
UmVmUHRyLCBidXQgaXRzIGludGVybmFsIHBvaW50ZXIgaXMgcGFja2VkLgorICAgICAgICBTbyB3
ZSBjYW4gcmVwcmVzZW50IHRoZW0gaW4gNiBieXRlcyB3aXRoIDEgYnl0ZSBhbGlnbm1lbnQuCisK
KyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYv
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BhY2tlZC5oOgorICAgICAgICAoV1RGOjph
bGlnbm9mKToKKyAgICAgICAgKiB3dGYvUGFja2VkUmVmLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5o
LgorICAgICAgICAqIHd0Zi9QYWNrZWRSZWZQdHIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oLgor
ICAgICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6UmVmUHRyOjpvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmUHRyOjp1bnNwZWNp
ZmllZEJvb2xUeXBlSW5zdGFuY2UgY29uc3QpOgorCiAyMDE5LTEyLTEzICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEZW55IG1hY2ggbG9va3Vw
IGFjY2VzcyB0byAiKi5hcHBsZS1leHRlbnNpb24tc2VydmljZSIgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJy
YXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4
IGViOWRjMzA2YjQ0ZmYzNTAxZmY2NDlkMjlmZmUxMjk0MTIyZDg1YmMuLjQ2MDM1YTlkMTZiZDll
MzU1OTVhY2FkOGJlNzIzM2FmY2UzMzEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVHlwZWRBcnJheS5jcHAKQEAgLTE4NCwxMCArMTg0LDEwIEBAIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZVR5cGVkQXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBl
ZEFycmF5CiAKICAgICB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUgPSBlbGVtZW50U2l6ZSh0b1R5
cGVkQXJyYXlUeXBlKGFycmF5VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgsIFs9XSh2b2lkKiBwKSB7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgsIGNy
ZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlmIChk
ZXN0cnVjdG9yKQogICAgICAgICAgICAgZGVzdHJ1Y3RvcihwLCBkZXN0cnVjdG9yQ29udGV4dCk7
Ci0gICAgfSk7CisgICAgfSkpOwogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjcmVhdGVUeXBlZEFy
cmF5KGdsb2JhbE9iamVjdCwgYXJyYXlUeXBlLCBXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCAv
IGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3Bl
LCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zMTIsMTAgKzMxMiwxMCBAQCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VBcnJheUJ1ZmZlcldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2b2lkKiBi
eXRlcwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUZyb21CeXRlcyhieXRlcywgYnl0ZUxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRv
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGJ5dGVMZW5ndGgs
IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlm
IChieXRlc0RlYWxsb2NhdG9yKQogICAgICAgICAgICAgYnl0ZXNEZWFsbG9jYXRvcihwLCBkZWFs
bG9jYXRvckNvbnRleHQpOwotICAgIH0pOworICAgIH0pKTsKIAogICAgIEpTQXJyYXlCdWZmZXIq
IGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBl
eGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDE2MWQ3MDVjYzJlM2M2MTllYzU0NGI3NjZlYjc0ZDI4YTg0Zjg4YzYu
LjNkZmRlNjM2ZDUyMDI0YTY2YjEwNzhjMzI2ODU1NTg2MmYwMzViYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03NTIsNyArNzUyLDYgQEAKIAkJMEZGQjkyMjAxNkQwMzNCNzAw
NTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3Ry
dWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGQzkyMTYxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzkyMTUxQjk0RkIz
RTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovOyB9OwogCQkwRkZDOTlEMTE4NEVD
OEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZG
Qzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
RkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmggKi87IH07CiAJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdD
U0VQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRkM5NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi87IH07CiAJCTBGRkZD
OTVDMTRFRjkwQUYwMEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NTAxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggKi87IH07CkBAIC0zMjUzLDggKzMyNTIsNiBAQAogCQkwRkZCODBCQjIwQTc5NDcwMDAw
NkFBRjYgLyogSklUQ29kZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUQ29kZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzky
MTUxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcm9wZXJ0eVR5cGVLZXkuaDsgcGF0aCA9IGRmZy9ERkdQ
cm9wZXJ0eVR5cGVLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5RDAx
ODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25zdGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
Qzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NGQVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NTRVBoYXNlLmNwcDsg
cGF0aCA9IGRmZy9ERkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02OTQzLDggKzY5NDAsNiBAQAogCQkJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0
eUNoZWNrTW9kZS5oICovLAogCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1
ZmZlci5jcHAgKi8sCiAJCQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
LmggKi8sCi0JCQkJMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldC5jcHAgKi8sCi0JCQkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8q
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICovLAogCQkJCTBGMzBGQjYwMURD
MkRFOTYwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggKi8sCiAJCQkJQTdBOEFG
MjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJQTdBOEFG
MjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovLApAQCAtODg4OCw3ICs4
ODgzLDYgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkM5OUQ1MTg0RUUz
MTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzBGQjYxMURDMkRFOTkwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBC
MzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKaW5kZXggNTNjY2M3NGY4MmQ5YmRlMjUzM2MyZjY5M2U2Njc2YTliZWYzMWI2
OC4uZmU1ZjUxOTNiZDU1MWI2NmI2Y2YxMmNmOTc1Yjk3ZTNiYjU0ZDJmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzAzLDcgKzcwMyw2IEBAIHByb2ZpbGVyL1Byb2ZpbGVyVUlE
LmNwcAogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKIHJ1bnRpbWUvQXJnTGlzdC5j
cHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCi1ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldC5jcHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmlu
ZGV4IGMyNDMxZjAzZmNlOTY3YzJmNmE3ZWU0MGFiZjNkNTYxNTU0NjMzYmUuLjA3YmFiZTczYjRk
ZTk1ZjY4NmZjZDBjMmI5MGZjMjUzYjk3ZDViYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHR3Jh
cGguaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0zOCwxOSArMzcsMTcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50
QWRhcHRvcjo6YWRkKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0FycmF5QnVmZmVyVmll
dyogdmlldywgQ29tbW9uRGF0YSYgY29tbW9uKQogewotICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+
dm0oKTsKKyAgICAvLyB2aWV3IGlzIGFscmVhZHkgZnJvemVuLiBJZiBpdCBpcyBkZWFsbG9jYXRl
ZCwgamV0dGlzb25pbmcgaGFwcGVucy4KICAgICBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQqIHdhdGNocG9pbnQgPSBudWxscHRyOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIHdhdGNocG9pbnQgPSBjb21t
b24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgfQotICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9Ci0gICAgICAgIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdX
YXRjaHBvaW50LT5zZXQoKS5hZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7Ci0gICAgY29kZUJsb2Nr
LT5hZGRDb25zdGFudChDb25jdXJyZW50SlNMb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spLCBuZXV0
ZXJpbmdXYXRjaHBvaW50KTsKKyAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB2aWV3LT5w
b3NzaWJseVNoYXJlZEJ1ZmZlcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5QnVmZmVyKTsK
ICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbmVlZCB0byBzZXQgdGhpcyB3YXRjaHBvaW50IGF0IGFs
bCBmb3Igc2hhcmVkIGJ1ZmZlcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NDEwOAotICAgIHZtLmhlYXAuYWRkUmVmZXJlbmNlKG5ldXRlcmluZ1dh
dGNocG9pbnQsIHZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCkpOworICAgIGFycmF5QnVmZmVy
LT5uZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCkuYWRkKFdURk1vdmUod2F0Y2hwb2ludCkpOwogfQog
CiB2b2lkIFN5bWJvbFRhYmxlQWRhcHRvcjo6YWRkKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAppbmRleCA3OTY0OTg1MzMxNjAzYzM4YmJhZWNlNDNiNDdhOGJhMDg3OWJkODcw
Li5iMzIwZjcwN2M5NWYxMjM5Mzg1MWJjM2IyYjJiNDJiOTU2ZGQwYmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTM5OSw2ICsxMzk5LDcgQEAgSlNBcnJheUJ1
ZmZlclZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcoSlNWYWx1ZSB2YWx1ZSkKICAgICBp
ZiAoIXZpZXctPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKKyAgICBmcmVlemUodmlldyk7CiAgICAgd2F0Y2hwb2ludHMoKS5hZGRM
YXppbHkodmlldyk7CiAgICAgcmV0dXJuIHZpZXc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggMDdiZGEzOGE2ZTIyOGFmZGQwNDFiMjE4
NjBjN2FmNDIzMTIzMzQ3NS4uM2QwZGMyNTE2MjE3MjU4M2M5MDI5ODFiZGRiZWY3YzA0YWE4MDg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApA
QCAtMjYsMTMgKzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKIAotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5o
IgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGlj
IFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPj4+IGRlc3RydWN0b3I7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgZGVzdHJ1Y3Rvci5j
b25zdHJ1Y3QoY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQqKT4oW10gKHZvaWQqIHApIHsgR2ln
YWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH0pKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7Cit9CisKIFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDog
bV9kYXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9y
KSkKQEAgLTQyLDggKzUxLDEwIEBAIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwKIAogU2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50czo6flNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKQogewotICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdl
dFVuc2FmZSgpKTsKKyAgICBpZiAobV9kZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiB3
ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTc2OTgKKyAgICAgICAgbV9kZXN0cnVjdG9yLT5ydW4obV9kYXRhLmdl
dFVuc2FmZSgpKTsKKyAgICB9CiB9CiAKIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVy
Q29udGVudHMoKQpAQCAtODQsMTUgKzk1LDE3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
Y2xlYXIoKQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OmRlc3Ryb3koKQogewotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Njk4Ci0gICAgbV9kZXN0cnVjdG9yKG1fZGF0YS5n
ZXRVbnNhZmUoKSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvcikgeworICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IHVzZSBnZXRVbnNhZmUgaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NzY5OAorICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEu
Z2V0VW5zYWZlKCkpOworICAgIH0KIH0KIAogdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNl
dCgpCiB7Ci0gICAgbV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07Ci0gICAgbV9zaGFyZWQg
PSBudWxscHRyOwogICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kZXN0cnVjdG9yID0gbnVs
bHB0cjsKKyAgICBtX3NoYXJlZCA9IG51bGxwdHI7CiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9
CiAKQEAgLTEyMywxMyArMTM2LDEzIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAKICAgICBt
X3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5C
eXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2
b2lkKiBwKSB7IEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHApOyB9OworICAg
IG1fZGVzdHJ1Y3RvciA9IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQogCiB2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6Om1ha2VTaGFyZWQoKQogewogICAgIG1fc2hhcmVkID0gYWRv
cHRSZWYobmV3IFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoZGF0YSgpLCBzaXplSW5CeXRlcygp
LCBXVEZNb3ZlKG1fZGVzdHJ1Y3RvcikpKTsKLSAgICBtX2Rlc3RydWN0b3IgPSBbXSAodm9pZCop
IHsgfTsKKyAgICBtX2Rlc3RydWN0b3IgPSBudWxscHRyOwogfQogCiB2b2lkIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCkBAIC0xNTgs
OSArMTcxLDkgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZm
ZXJDb250ZW50cyYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwogICAgIEFT
U0VSVChtX3NoYXJlZCk7Ci0gICAgb3RoZXIubV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07
Ci0gICAgb3RoZXIubV9zaGFyZWQgPSBtX3NoYXJlZDsKICAgICBvdGhlci5tX2RhdGEgPSBtX2Rh
dGE7CisgICAgb3RoZXIubV9kZXN0cnVjdG9yID0gbnVsbHB0cjsKKyAgICBvdGhlci5tX3NoYXJl
ZCA9IG1fc2hhcmVkOwogICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKTsKIH0KQEAgLTE5Nyw3ICsyMTAsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8gICBmcm9tIHRo
ZSBjYWdlLgogUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBjcmVhdGVG
cm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZyZWUo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH0pOworICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMo
ZGF0YSwgYnl0ZUxlbmd0aCwgcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwogfQogCiAv
LyBGSVhNRTogV2UgY2Fubm90IHVzZSB0aGlzIGV4Y2VwdCBpZiB0aGUgbWVtb3J5IGNvbWVzIGZy
b20gdGhlIGNhZ2UuCkBAIC0zNzEsNiArMzg0LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6dHJhbnNm
ZXJUbyhWTSYgdm0sIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKIAogICAgIG1fY29udGVu
dHMudHJhbnNmZXJUbyhyZXN1bHQpOwogICAgIG5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRy
YW5zZmVyKHZtKTsKKyAgICBtX25ldXRlcmluZ1dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgIkFy
cmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzgx
LDYgKzM5NSw3IEBAIHZvaWQgQXJyYXlCdWZmZXI6Om5ldXRlcihWTSYgdm0pCiAgICAgQXJyYXlC
dWZmZXJDb250ZW50cyB1bnVzZWQ7CiAgICAgbV9jb250ZW50cy50cmFuc2ZlclRvKHVudXNlZCk7
CiAgICAgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIodm0pOworICAgIG1fbmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5maXJlQWxsKHZtLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJl
ZCIpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZU
cmFuc2ZlcihWTSYgdm0pCkBAIC0zODksOCArNDA0LDYgQEAgdm9pZCBBcnJheUJ1ZmZlcjo6bm90
aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIoVk0mIHZtKQogICAgICAgICBKU0NlbGwq
IGNlbGwgPSBpbmNvbWluZ1JlZmVyZW5jZUF0KGkpOwogICAgICAgICBpZiAoSlNBcnJheUJ1ZmZl
clZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIGNlbGwp
KQogICAgICAgICAgICAgdmlldy0+bmV1dGVyKCk7Ci0gICAgICAgIGVsc2UgaWYgKEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nhc3Q8QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4odm0sIGNlbGwpKQotICAgICAgICAgICAg
d2F0Y2hwb2ludC0+ZmlyZUFsbCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZTZmNTVjZTBiZDk4OWRmYjE1ZDY2NDJkNmY4
YWI1YzNiZjQ1MmZkOS4uZDYwYjVjZmI4NjhmOTJmZmM2NTRiY2RiNWE5Y2I1NWYzMGIxOThiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0yNywx
MCArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCIKICNpbmNs
dWRlICJHQ0luY29taW5nUmVmQ291bnRlZC5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNp
bmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDYsOCBA
QCBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTQXJy
YXlCdWZmZXI7CiAKLXR5cGVkZWYgRnVuY3Rpb248dm9pZCh2b2lkKik+IEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uOwordXNpbmcgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+OwordXNpbmcgUGFja2VkQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+
OwogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKQEAgLTU2LDcg
KzU5LDcgQEAgY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckMKIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0
YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47
CiAgICAgRGF0YVR5cGUgbV9kYXRhOwotICAgIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
IG1fZGVzdHJ1Y3RvcjsKKyAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBt
X2Rlc3RydWN0b3I7CiAgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKQEAgLTk4LDEw
ICsxMDEsMTAgQEAgY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgdm9pZCBjb3B5VG8o
QXJyYXlCdWZmZXJDb250ZW50cyYpOwogICAgIHZvaWQgc2hhcmVXaXRoKEFycmF5QnVmZmVyQ29u
dGVudHMmKTsKIAotICAgIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3Rv
cjsKLSAgICBSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7CiAgICAg
dXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOworICAgIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKKyAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7CiAgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsK
IH07CiAKQEAgLTE0OCw2ICsxNTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0lu
Y29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgdm9pZCBuZXV0ZXIoVk0mKTsK
ICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0KKyAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBuZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcnJheUJ1ZmZlciwgbV9jb250ZW50
cykgKyBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlCdWZmZXJDb250ZW50cywgbV9kYXRhKTsgfQogCkBA
IC0xNjUsMTQgKzE2OSwxNSBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5n
UmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogICAgIHZvaWQgbm90aWZ5SW5jb21taW5nUmVmZXJl
bmNlc09mVHJhbnNmZXIoVk0mKTsKIAogICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50
czsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldCB7IElz
V2F0Y2hlZCB9OworcHVibGljOgorICAgIFdlYWs8SlNBcnJheUJ1ZmZlcj4gbV93cmFwcGVyOwor
cHJpdmF0ZToKICAgICBDaGVja2VkPHVuc2lnbmVkPiBtX3BpbkNvdW50OwogICAgIGJvb2wgbV9p
c1dhc21NZW1vcnk7CiAgICAgLy8gbV9sb2NrZWQgPT0gdHJ1ZSBtZWFucyB0aGF0IHNvbWUgQVBJ
IHVzZXIgZmV0Y2hlZCBtX2NvbnRlbnRzIGRpcmVjdGx5IGZyb20gYSBUeXBlZEFycmF5IG9iamVj
dCwKICAgICAvLyB0aGUgYnVmZmVyIGlzIGJhY2tlZCBieSBhIFdlYkFzc2VtYmx5Lk1lbW9yeSwg
b3IgaXMgYSBTaGFyZWRBcnJheUJ1ZmZlci4KICAgICBib29sIG1fbG9ja2VkOwotCi1wdWJsaWM6
Ci0gICAgV2VhazxKU0FycmF5QnVmZmVyPiBtX3dyYXBwZXI7CiB9OwogCiB2b2lkKiBBcnJheUJ1
ZmZlcjo6ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIxNmQ4MTJhNGJjNTdjOGNlZjNhYjdhY2E3ZDMzOGM1
YzBjOTNiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnRTZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKLQotI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OnNfaW5mbyA9IHsKLSAgICAiQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dCkKLX07Ci0KLUFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0
UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAg
IHN0YXRpY19jYXN0PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KGNlbGwpLT5B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQoKTsKLX0KLQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiByZXN1bHQgPSBuZXcKLSAgICAgICAg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+
KHZtLmhlYXApKQotICAgICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQodm0p
OwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLVN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwg
anNOdWxsKCksIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19
Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKCkKLXsK
LSAgICBtX3NldC0+ZmlyZUFsbCh2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM3MzdjY2U1OGMxYzk3ZDExNWE2MDlj
ZGIzMGQwMTExOTQxMjNlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIERFQ0xBUkVfSU5GTzsKLSAg
ICAKLSAgICBzdGF0aWMgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBjcmVhdGUo
Vk0mKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIAotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOwotICAgIAotICAgIFdhdGNocG9pbnRTZXQm
IHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9Ci0gICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KFZNJik7Ci0gICAgCi0gICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWYw
YWE0ZTczNWQ2ZDhiYjQ4OWU4MDM4MWQwMGI2NTEyZmVlZjgzMC4uZjUzOWY1MDViNmE4MTU3NDI1
YzE5Y2FmYWJiNGI2ODk1Y2M3ZmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlZNLmgiCiAKICNpbmNsdWRlICJBcmdMaXN0
LmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5j
bHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgogI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgpAQCAtNDY2LDcgKzQ2NSw2IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNw
YXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
KSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMs
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVu
bGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWYyMDE5ODBlNTBhOTNiYjYwMThm
YjM2ZGJkZjVmYjE0NDg3ZTQzMS4uYjk0MzliNjk5YjM3NmNlN2YyYTUzNmFmOGIxMjBiZmNhODFk
NzcyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02NjgsNyArNjY4LDYgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFp
blN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VBcnJheVZhbHVlTWFwU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0
cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRXZhbENv
ZGVCbG9ja1N0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKaW5kZXggM2Y4YmUzNmVmNmZiMDFjNmQ3MGQ3M2U4
MzNkZjI2NTE0YzUxMDlhYS4uMTNjNjJmNjgzNDA2NjdhNzQxODVlODhhZmJjNzg5YmI3ZjcwMmMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseU1lbW9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNBcnJheUJ1ZmZlciogSlNXZWJBc3Nl
bWJseU1lbW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IAogICAgIC8vIFdlIGNhbid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBh
IGNvcHkgY29uc3RydWN0b3IuLi4KICAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1v
cnkgPSBtX21lbW9yeS5nZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBbcHJvdGVjdGVkTWVt
b3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsgfTsKKyAgICBhdXRvIGRl
c3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQodm9pZCopPihbcHJvdGVjdGVkTWVtb3J5
ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsgfSk7CiAgICAgbV9idWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKG1lbW9yeSgpLm1lbW9yeSgpLCBtZW1vcnko
KS5zaXplKCksIFdURk1vdmUoZGVzdHJ1Y3RvcikpOwogICAgIG1fYnVmZmVyLT5tYWtlV2FzbU1l
bW9yeSgpOwogICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgbV9idWZmZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlOGVjMTU5YTcxNDRmNjFhZDU4MGU1NjA1
ZWM0MjdlNjljMzk4OGUuLjViZDdhYjQzZGUwNmY4OTNjMTY0ZDU5OWM2Y2M0ZjVmYjE3YjA1YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjczLDYgKzY3
Myw4IEBACiAJCUUzNENEMEQwMjI4MTBBMDIwMDIwRDI5OSAvKiBQYWNrZWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY0MjEy
N0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1
Q0MyM0E0NDVFRTAwOERENEM4IC8qIFBhY2tlZFJlZlB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNr
ZWRSZWZQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkQyMEM5MDk1
MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdvcmtlclBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVUaW1lQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA3Nyw2ICsxMDc5LDggQEAKIAkJCQlBOEE0NzJEQjE1MUE4
MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuaCAqLywKIAkJCQlFMzRDRDBEMDIyODEwQTAy
MDAyMEQyOTkgLyogUGFja2VkLmggKi8sCiAJCQkJQThBNDcyREYxNTFBODI1QjAwNDEyM0ZGIC8q
IFBhY2tlZEludFZlY3Rvci5oICovLAorCQkJCUUzNjg5NUNCMjNBNDQ1Q0QwMDhERDRDOCAvKiBQ
YWNrZWRSZWYuaCAqLywKKwkJCQlFMzY4OTVDQzIzQTQ0NUVFMDA4REQ0QzggLyogUGFja2VkUmVm
UHRyLmggKi8sCiAJCQkJQThBNDcyRTAxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VBbGxvY2F0aW9u
LmggKi8sCiAJCQkJQThBNDcyRTMxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgKi8s
CiAJCQkJQThBNDcyRTQxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCBhZmNjNjBlMjIwMzI1Y2IxMDlmZWQ5YWVmNDgxYmQ5Yzk2ZjM4ZmY1
Li5kYWU0YTcxYjI4ZDEzMDQyNGMwYmQ3MzFiZTQxNjQzZjA1MmIzZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dApAQCAtMTU1LDYgKzE1NSw4IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBP
cHRpb25hbC5oCiAgICAgT3JkZXJNYWtlci5oCiAgICAgUGFja2VkLmgKKyAgICBQYWNrZWRSZWYu
aAorICAgIFBhY2tlZFJlZlB0ci5oCiAgICAgUGFja2VkSW50VmVjdG9yLmgKICAgICBQYWdlQWxs
b2NhdGlvbi5oCiAgICAgUGFnZUJsb2NrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKaW5kZXggODM5ZDNjODczMTVlNTAxMDhi
Yzk3MTgwNmNhOTQ1OThjMzEwMzllYi4uYjIyZmM3NjFkNDI5NzRiOTgxMjViYjdlN2QxYzJkMWY5
YTU3ODMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFja2VkLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGFja2VkLmgKQEAgLTE2Myw2ICsxNjMsMTAgQEAgY2xhc3MgUGFja2VkQWxpZ25l
ZFB0ciB7CiAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIChQYWNrZWRBbGlnbmVkUHRyOjoqVW5z
cGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGdldCgpID8gJlBhY2tlZEFsaWduZWRQdHI6Om1fc3RvcmFnZSA6IG51bGxw
dHI7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7
IH0KIAogICAgIFBhY2tlZEFsaWduZWRQdHImIG9wZXJhdG9yPShUKiB2YWx1ZSkKQEAgLTE3Miw5
ICsxNzYsOSBAQCBjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBVPgotICAgIFQgZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIFQqIGV4Y2hhbmdl
KFUmJiBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIFQgb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAg
ICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKICAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdW
YWx1ZSkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQpAQCAtMTg5LDE1ICsxOTMs
MTUgQEAgY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KICAg
ICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgVCB0MSA9IGdldCgpOwot
ICAgICAgICBUIHQyID0gb3RoZXIuZ2V0KCk7CisgICAgICAgIFQqIHQxID0gZ2V0KCk7CisgICAg
ICAgIFQqIHQyID0gb3RoZXIuZ2V0KCk7CiAgICAgICAgIHNldCh0Mik7CiAgICAgICAgIG90aGVy
LnNldCh0MSk7CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKFQmIHQyKQorICAgIHZvaWQgc3dhcChU
KiB0MikKICAgICB7Ci0gICAgICAgIFQgdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDEgPSBnZXQo
KTsKICAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CiAgICAgICAgIHNldCh0MSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
YWNrZWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGVjZGZmOGQ3NmUzN2M3ZjM5ZmI4YWQ5ZDg3N2M2OTA1
MzQyMWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkUmVmLmgKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2lu
ZyBQYWNrZWRSZWYgPSBSZWY8VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK3VzaW5nIFdURjo6UGFja2VkUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGFja2VkUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMjQ3ZDdkZmI2NTdmZWEzZWU3NjAzZjA3MjI3NDI2NzUwZDc2ZDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkUmVmUHRyLmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWZQ
dHIgPSBSZWZQdHI8VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKK3VzaW5nIFdURjo6UGFja2VkUmVmUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCA1YmVjNmM3ZWUyMGU4Njcy
MzUyNzkzMDcyOGU4Y2YxODNkYjliNDhiLi42ZDRjNjQ0NGU3ZWFmMWFhMWVhYWY0MzI5YTVmNjk4
ZjA5M2VkMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtODEsOCArODEsOCBAQCBjbGFzcyBSZWZQdHIgewogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CiAKICAgICAvLyBUaGlz
IGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBi
dXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBUKiAoUmVmUHRyOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6bV9wdHIgOiBudWxscHRyOyB9CisgICAg
dXNpbmcgVW5zcGVjaWZpZWRCb29sVHlwZSA9IHZvaWQgKFJlZlB0cjo6KikoKSBjb25zdDsKKyAg
ICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAm
UmVmUHRyOjp1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFuY2UgOiBudWxscHRyOyB9CiAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQogICAgIApA
QCAtMTAyLDYgKzEwMiw4IEBAIGNsYXNzIFJlZlB0ciB7CiAgICAgUmVmUHRyIGNvcHlSZWYoKSBj
b25zdCAmIFdBUk5fVU5VU0VEX1JFVFVSTiB7IHJldHVybiBSZWZQdHIobV9wdHIpOyB9CiAKIHBy
aXZhdGU6CisgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFuY2UoKSBjb25zdCB7IH0K
KwogICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwgUHRyVHJhaXRzPihUKik7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5kIGNsYXNzIFJlZlB0cjsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg4OWUzNWI1
NjRlMGY1ZDQ2MTNlOGI0NmRmM2I4NjM4YTM3ZjcwMjcuLjAzYzkwOTc5NzNjMjFjYTk0ZjhlYmM1
Yzc2NjEzZjU2M2Y4MDgxODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNTE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgUGFja2VkUmVmIGFuZCBQYWNrZWRSZWZQdHIuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJlZi5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNzV2l0
aFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dl
cjo6UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OnJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6RGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpEZXJpdmVkUGFja2VkUmVm
Q2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bh
Y2tlZFJlZlB0ci5jcHA6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1JlZlB0ci5jcHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmYxKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbnN0UmVmQ291bnRl
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVybkNvbnN0UmVmQ291bnRl
ZFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5SZWZDb3VudGVkUmVmKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpQYWNr
ZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpsb2dn
ZXJOYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyOjpyZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI6OmRlcmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRocmVhZFNhZmVS
ZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGhyZWFk
U2FmZVJlZkNvdW50ZWRPYmplY3Q6On5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3Q6On5NYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmMSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6CisKIDIwMTktMTItMTMg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIHByZXBh
cmUtQ2hhbmdlTG9nIGFib3V0IEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb25zCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAppbmRleCA4N2Y4NDQyMTAxYTBkZjdmZGYyZWMwZDE0YjE1ZjA3NjQy
YTM0ZTcyLi5jOTE3MDM2M2VlM2IwNDUwYzYzMTEzYWFhNThiNWQ5NmY2MTFiZTU0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTY1LDYgKzY1LDggQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgIFRlc3RzL1dURi9PcHRpb25TZXQuY3BwCiAgICAgVGVzdHMvV1RGL09wdGlvbmFs
LmNwcAogICAgIFRlc3RzL1dURi9QYWNrZWQuY3BwCisgICAgVGVzdHMvV1RGL1BhY2tlZFJlZi5j
cHAKKyAgICBUZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcAogICAgIFRlc3RzL1dURi9QYXJraW5n
TG90LmNwcAogICAgIFRlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAogICAgIFRlc3RzL1dURi9S
ZWRCbGFja1RyZWUuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjZGNhNzM1YjBlNDlm
ZjlmNDlmMThjYThhYzc1NDVmZGU5MDgxMWIuLjdjMmY4ZjM0M2UwNjI3ZGRiYzgyMTE0Y2YxY2Uw
MzE3ZTg4NTRmODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjcsNiArOTY3LDggQEAK
IAkJRTM1RkM3QjIyMkI4MkE3MzAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUZDN0Ix
MjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gKi87IH07CiAJ
CUUzNzNENzkxMUYyQ0YzNTIwMEM2RkFBRiAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAv
KiBTaWduYWxzLmNwcCAqLzsgfTsKIAkJRTM4QTBEMzUxRkQ1MENDMzAwRTk4QzhCIC8qIFRocmVh
ZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLzsgfTsKKwkJRTM4RDY1
Q0EyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENjVDODIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFj
a2VkUmVmLmNwcCAqLzsgfTsKKwkJRTM4RDY1Q0IyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJl
ZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhENjVDOTIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCAqLzsgfTsKIAkJRTNB
MUU3N0YyMUIyNUIzOTAwOEM2MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ExRTc3RTIxQjI1QjM5
MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLzsgfTsKIAkJRTNBMUU3ODIy
MUIyNUI3QTAwOEM2MDA3IC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0ExRTc4MDIxQjI1Qjc5MDA4QzYwMDcgLyogVVJMLmNwcCAqLzsg
fTsKIAkJRTNBMUU3ODUyMUIyNUI5MTAwOEM2MDA3IC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ExRTc4NDIxQjI1QjkxMDA4
QzYwMDcgLyogVVJMUGFyc2VyLmNwcCAqLzsgfTsKQEAgLTI0OTIsNiArMjQ5NCw4IEBACiAJCUUz
NUZDN0IxMjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0xvY2tUYWtlc1dlYlRocmVh
ZExvY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODcwMjBDOTA5ODEw
MEU2MzJCQyAvKiBXb3JrZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdvcmtlclBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhB
MEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzOEQ2NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkUmVmLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDY1QzkyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWRSZWZQdHIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZB
MkUgLyogU2lnbmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aWduYWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5OEJDMEYyMDQxQzc2
MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVuaXF1ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNBMUU3N0UyMUIyNUIzOTAwOEM2MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXJUZXh0RW5jb2Rpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc1OSw2ICszNzYzLDggQEAKIAkJ
CQkxQUZERTY1NDE5NTNCMkMwMDBDNDhGRkEgLyogT3B0aW9uYWwuY3BwICovLAogCQkJCUNFNTBE
OEM4MUM4NjY1Q0UwMDcyRUE1QSAvKiBPcHRpb25TZXQuY3BwICovLAogCQkJCUUzMkI1NDkxMjI4
MTBBQzAwMDhBRDcwMiAvKiBQYWNrZWQuY3BwICovLAorCQkJCUUzOEQ2NUM4MjNBNDVGQTkwMDYz
RDY5QSAvKiBQYWNrZWRSZWYuY3BwICovLAorCQkJCUUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5QSAv
KiBQYWNrZWRSZWZQdHIuY3BwICovLAogCQkJCTBGRTQ0Nzk3MUI3NkYxRTMwMDk0OThFQiAvKiBQ
YXJraW5nTG90LmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3Jp
dHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNr
VHJlZS5jcHAgKi8sCkBAIC00NDQ4LDYgKzQ0NTQsOCBAQAogCQkJCTFBNzdCQUEzMUQ5QUZGRkMw
MDVGQzU2OCAvKiBPcHRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDIxRDBB
NTkwQzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMkI1
NDkyMjI4MTBBQzQwMDhBRDcwMiAvKiBQYWNrZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM4
RDY1Q0EyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjU5MUQwQTU5MEMwMEZFQkNGMyAvKiBQYXJraW5nTG90LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5MEMwMEZFQkNGMyAvKiBSZWRC
bGFja1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUGFja2VkUmVmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2FiZWI3NGMwNTZkYThlZjE0MjE0NGMwYzNj
NzE1N2JlMDhlOTY4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUGFja2VkUmVmLmNwcApAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPHd0Zi9Q
YWNrZWRSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfUGFja2VkUmVmLCBCYXNpYykKK3sKKyAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dl
cj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1l
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgQXNzaWdubWVudCkKK3sKKyAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBy
ZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICAgICAgcmVmID0gYjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRy
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
ICAgIHJlZiA9IGM7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcmVmLnB0cigpKTsKKyAgICAgICAg
bG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykg
ZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBhZG9w
dFJlZihiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYyk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYywgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworc3RhdGljIFBhY2tlZFJlZjxSZWZMb2dnZXI+
IHBhc3NXaXRoUmVmKFBhY2tlZFJlZjxSZWZMb2dnZXI+JiYgcmVmZXJlbmNlKQoreworICAgIHJl
dHVybiBXVEZNb3ZlKHJlZmVyZW5jZSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgUmV0dXJu
VmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIo
ImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmPFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBhY2tlZFJlZjxSZWZMb2dnZXI+KGEp
KSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0g
cGFzc1dpdGhSZWYoYik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcmVmLnB0cigpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYo
YikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0cikpOworICAgICAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIyLmdldCgp
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8RGVyaXZlZFJlZkxvZ2dl
cj4gZGVyaXZlZFJlZmVyZW5jZShhKTsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gYmFz
ZVJlZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIGRlcml2ZWRSZWZlcmVuY2UucHRyKCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIGJhc2VSZWZlcmVuY2UucHRyKCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitURVNUKFdURl9QYWNrZWRSZWYsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEi
KTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVm
TG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcDIoYik7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEucHRyKCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLnB0
cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAxKGEpOworICAgICAg
ICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIu
cHRyKCkpOworICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIucHRyKCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8
IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworc3RydWN0
IFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKKyAgICBQYWNrZWRSZWZD
aGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIHJlZigpOworICAg
IHZvaWQgZGVyZWYoKTsKKyAgICBjb25zdCBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZM
b2dnZXI+KiBzbG90VG9DaGVjayB7IG51bGxwdHIgfTsKK307CisKK3N0cnVjdCBEZXJpdmVkUGFj
a2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciB7Cisg
ICAgRGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOwor
fTsKKworUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9n
Z2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKwor
dm9pZCBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKCkKK3sKKyAgICBpZiAoc2xvdFRv
Q2hlY2spCisgICAgICAgIGxvZygpIDw8ICJzbG90PSIgPDwgc2xvdFRvQ2hlY2stPmdldCgpLm5h
bWUgPDwgIiAiOworICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQgUGFja2VkUmVmQ2hl
Y2tpbmdSZWZMb2dnZXI6OmRlcmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAgICAg
IGxvZygpIDw8ICJzbG90PSIgPDwgc2xvdFRvQ2hlY2stPmdldCgpLm5hbWUgPDwgIiAiOworICAg
IFJlZkxvZ2dlcjo6ZGVyZWYoKTsKK30KKworRGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9n
Z2VyOjpEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkK
KyAgICA6IFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIHsgbmFtZSB9Cit7Cit9CisKK1RFU1Qo
V1RGX1BhY2tlZFJlZiwgQXNzaWduQmVmb3JlRGVyZWYpCit7CisgICAgRGVyaXZlZFBhY2tlZFJl
ZkNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dl
ciBiKCJiIik7CisgICAgRGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGMoImMiKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyPiBy
ZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIGIuc2xvdFRv
Q2hlY2sgPSAmcmVmOworICAgICAgICByZWYgPSBiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0g
bnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVD
VF9FUSgmYiwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8IGRl
cmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmPFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90
VG9DaGVjayA9ICZyZWY7CisgICAgICAgIGMuc2xvdFRvQ2hlY2sgPSAmcmVmOworICAgICAgICBy
ZWYgPSBjOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYy5zbG90
VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcmVmLnB0cigpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBz
bG90PWEgcmVmKGMpIHNsb3Q9YyBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFBhY2tlZFJlZkNoZWNraW5nUmVm
TG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAg
IHJlZiA9IGFkb3B0UmVmKGIpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
PFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9D
aGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGFkb3B0UmVmKGMpOworICAgICAgICBhLnNsb3RU
b0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNs
b3Q9YyBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BhY2tlZFJlZlB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhMWExYjQzMDgwNDE3NWI4ZWY0
ZDBmOGJjNzZiMmI2ODdjYWIyMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhY2tlZFJlZlB0ci5jcHAKQEAgLTAsMCArMSw1OTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNs
dWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWYuaD4KKyNpbmNs
dWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworCisgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gZW1wdHk7CisgICAg
RVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
Lm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJl
ZlB0cjxSZWZMb2dnZXI+IHB0ciA9ICZhOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQo
KSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4g
cDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJl
ZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+
IHAyID0gcDE7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVm
KGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51
bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsK
KyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZl
ZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIg
PSBwMTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkg
ZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VR
KG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxs
cHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
fQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKK3sKKyAg
ICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZM
b2dnZXI+IHBhc3NSZWYoYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9
IFdURk1vdmUocGFzc1JlZik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFkb3B0KQoreworICAgIERlcml2
ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gZW1wdHk7
CisgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBB
c3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dl
ciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
ICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYo
YikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQ
YWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0
ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9ICZiOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYo
YikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZiKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVm
TG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAg
ICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAx
KCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEVY
UEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGMpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgZGVyZWYoYykgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgICAgIHB0ciA9ICZjOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHB0ci5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwdHIu
Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisj
aWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi13YXJuaW5nLW9wdGlvbiIKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtYXNzaWduLW92ZXJsb2FkZWQiCisj
ZW5kaWYKKyAgICAgICAgcHRyID0gcHRyOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgfCByZWYoYSkgZGVyZWYoYSkgfCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lm
IENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdU
Rl9QYWNrZWRSZWZQdHIsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZM
b2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
MSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAg
bG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIs
IHAyLmdldCgpKTsKKyAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIp
IHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RF
U1QoV1RGX1BhY2tlZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCit7CisgICAgUmVmTG9nZ2VyIGEo
ImEiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcmVmUHRyID0g
JmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHJlZiA9IHJlZlB0ci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxl
YXNlKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJi
Iik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51
bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7
CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIo
JmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RG
TW92ZShwMik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4g
cDIoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0g
V1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworc3RhdGljIFJlZlB0cjxSZWZMb2dnZXI+
IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQYWNrZWRSZWZQdHI8UmVmTG9n
Z2VyPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZXR1cm5WYWx1ZSkK
K3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgZjEoYSk7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgYXV0byBwdHIgPSBmMShhKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitzdHJ1Y3QgQ29uc3RSZWZDb3VudGVkIDogUmVmQ291bnRlZDxDb25zdFJlZkNvdW50
ZWQ+IHsKKyAgICBzdGF0aWMgUmVmPENvbnN0UmVmQ291bnRlZD4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb25zdFJlZkNvdW50ZWQpOyB9Cit9OworCitzdGF0aWMgY29uc3QgQ29u
c3RSZWZDb3VudGVkJiByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDb25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0
YW5jZS5nZXQoKTsKK30KK3N0YXRpYyBDb25zdFJlZkNvdW50ZWQmIHJldHVyblJlZkNvdW50ZWRS
ZWYoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb25zdFJlZkNvdW50ZWQ+IGluc3Rh
bmNlOworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVm
UHRyLCBDb25zdCkKK3sKKyAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVzIHdp
dGhvdXQgYW4gZXJyb3IuCisgICAgYXV0byBhID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsK
KyAgICBQYWNrZWRSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBiID0gV1RGTW92ZShhKTsKKyAg
ICBQYWNrZWRSZWZQdHI8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKKyAgICBQ
YWNrZWRSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBkID0gcmV0dXJuQ29uc3RSZWZDb3VudGVk
UmVmKCk7CisgICAgUGFja2VkUmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZSA9ICZyZXR1
cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBQYWNrZWRSZWZQdHI8Q29uc3RSZWZDb3VudGVk
PiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBQYWNrZWRSZWZQdHI8Y29uc3Qg
Q29uc3RSZWZDb3VudGVkPiBnID0gZjsKKyAgICBQYWNrZWRSZWZQdHI8Y29uc3QgQ29uc3RSZWZD
b3VudGVkPiBoKGYpOworICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGkocmV0
dXJuUmVmQ291bnRlZFJlZigpKTsKK30KKworc3RydWN0IFBhY2tlZFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyIDogUmVmTG9nZ2VyIHsKKyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcihj
b25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIHJlZigpOworICAgIHZvaWQgZGVyZWYoKTsKKyAg
ICBjb25zdCBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+KiBzbG90
VG9DaGVjayB7IG51bGxwdHIgfTsKK307CisKK1BhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2Vy
OjpQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDog
UmVmTG9nZ2VyIHsgbmFtZSB9Cit7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBsb2dnZXJOYW1l
KGNvbnN0IFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4mIHBvaW50ZXIpCit7
CisgICAgcmV0dXJuIHBvaW50ZXIgPyAmcG9pbnRlci0+bmFtZSA6ICJudWxsIjsKK30KKwordm9p
ZCBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKCkKK3sKKyAgICBpZiAoc2xvdFRv
Q2hlY2spCisgICAgICAgIGxvZygpIDw8ICJzbG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hl
Y2spIDw8ICIgIjsKKyAgICBSZWZMb2dnZXI6OnJlZigpOworfQorCit2b2lkIFBhY2tlZFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyOjpkZXJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNrKQorICAg
ICAgICBsb2coKSA8PCAic2xvdD0iIDw8IGxvZ2dlck5hbWUoKnNsb3RUb0NoZWNrKSA8PCAiICI7
CisgICAgUmVmTG9nZ2VyOjpkZXJlZigpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFz
c2lnbkJlZm9yZURlcmVmKQoreworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEo
ImEiKTsKKyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+
IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNs
b3RUb0NoZWNrID0gJnAxOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gJnAxOworICAgICAgICBw
MSA9IHAyOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90
VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgc2xvdD1hIHJlZihiKSBzbG90
PWIgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxv
Z2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAg
ICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAg
Yi5zbG90VG9DaGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBhLnNsb3RU
b0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJl
ZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAg
ICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sg
PSAmcHRyOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBhLnNsb3RUb0NoZWNrID0g
bnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVsbCBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5n
ZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnAxOworICAgICAgICBiLnNsb3RUb0No
ZWNrID0gJnAxOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBhLnNsb3RUb0No
ZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIu
Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSByZWYoYikgfCBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmVsZWFzZU5vbk51bGxC
ZWZvcmVEZXJlZikKK3sKKyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxv
Z2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcmVmUHRyOworICAg
ICAgICByZWZQdHIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51
bGxwdHI7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVm
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworLy8gRklYTUU6IEVuYWJsZSB0aGVz
ZSB0ZXN0cyBvbmNlIFdpbiBwbGF0Zm9ybSBzdXBwb3J0cyBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4KKyNpZiEgUExBVEZPUk0oV0lOKQorCitzdGF0aWMgYm9vbCBkb25lOworc3RhdGljIGJvb2wg
aXNEZXN0cm95ZWRJbk1haW5UaHJlYWQ7CitzdHJ1Y3QgVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3QgOiBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdD4gewor
ICAgIHN0YXRpYyBSZWY8VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOyB9CisKKyAgICB+
VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QoKQorICAgIHsKKyAgICAgICAgaXNEZXN0cm95ZWRJ
bk1haW5UaHJlYWQgPSBpc01haW5UaHJlYWQoKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fQorfTsKKworc3RydWN0IE1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCA6IFRocmVhZFNh
ZmVSZWZDb3VudGVkPE1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCwgV1RGOjpEZXN0cnVj
dGlvblRocmVhZDo6TWFpbj4geworICAgIHN0YXRpYyBSZWY8TWFpblRocmVhZFNhZmVSZWZDb3Vu
dGVkT2JqZWN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1haW5UaHJlYWRTYWZl
UmVmQ291bnRlZE9iamVjdCk7IH0KKworICAgIH5NYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3QoKQorICAgIHsKKyAgICAgICAgaXNEZXN0cm95ZWRJbk1haW5UaHJlYWQgPSBpc01haW5UaHJl
YWQoKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfQorfTsKKworVEVTVChXVEZfUGFja2Vk
UmVmUHRyLCBSZWxlYXNlSW5Ob25NYWluVGhyZWFkKQoreworICAgIGRvbmUgPSBmYWxzZTsKKyAg
ICBUaHJlYWQ6OmNyZWF0ZSgiIiwgW29iamVjdCA9IFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0
OjpjcmVhdGUoKV0geyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgRVhQRUNUX0ZBTFNFKGlzRGVzdHJveWVkSW5NYWluVGhyZWFkKTsKK30KKworVEVTVChX
VEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlSW5Ob25NYWluVGhyZWFkRGVzdHJveUluTWFpblRocmVh
ZCkKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKyAgICBkb25lID0g
ZmFsc2U7CisgICAgVGhyZWFkOjpjcmVhdGUoIiIsIFtvYmplY3QgPSBNYWluVGhyZWFkU2FmZVJl
ZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZSgpXSB7IH0pOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisKKyAgICBFWFBFQ1RfVFJVRShpc0Rlc3Ryb3llZEluTWFpblRocmVhZCk7
Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRleCAwOTg4MzA2ZGY4NDZmODNkMzUyYWQ4
Nzg0M2Q5MzRkNjdkOTcxMDEyLi5mODgzNTlhMGJhYTFmODFjOThhZmI3ZGVkY2VmYWQ3M2VhODdl
MWM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTM5MSw3
ICszOTEsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiB9CiAKLVJlZlB0cjxSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQorc3RhdGlj
IFJlZlB0cjxSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQogewogICAgIHJldHVybiBS
ZWZQdHI8UmVmTG9nZ2VyPigmbG9nZ2VyKTsKIH0KQEAgLTQxNSwxMiArNDE1LDEyIEBAIHN0cnVj
dCBDb25zdFJlZkNvdW50ZWQgOiBSZWZDb3VudGVkPENvbnN0UmVmQ291bnRlZD4gewogICAgIHN0
YXRpYyBSZWY8Q29uc3RSZWZDb3VudGVkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENvbnN0UmVmQ291bnRlZCk7IH0KIH07CiAKLWNvbnN0IENvbnN0UmVmQ291bnRlZCYgcmV0dXJu
Q29uc3RSZWZDb3VudGVkUmVmKCkKK3N0YXRpYyBjb25zdCBDb25zdFJlZkNvdW50ZWQmIHJldHVy
bkNvbnN0UmVmQ291bnRlZFJlZigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0
UmVmQ291bnRlZD4gaW5zdGFuY2U7CiAgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOwogfQotQ29u
c3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3VudGVkUmVmKCkKK3N0YXRpYyBDb25zdFJlZkNvdW50
ZWQmIHJldHVyblJlZkNvdW50ZWRSZWYoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
b25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOwogICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385663</attachid>
            <date>2019-12-13 17:14:21 -0800</date>
            <delta_ts>2019-12-13 17:53:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213171420.patch</filename>
            <type>text/plain</type>
            <size>71930</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjA3MWZjZTMzYzg1MjZkMjdhZjBiY2E4MDI4MDg3NmJhNjVmZWZkLi5mYTc4ZTUwOWVmMjE2Y2Q0
YjA3ZjliZTc2ZjZkYjQ5ZmYzZmIwOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgVGhlIG1haW4gcmVhc29uIHdo
eSB3ZSBhcmUgdXNpbmcgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGlzIG5vdCB0
byBpbmNyZWFzZSBzaXplb2YoQXJyYXlCdWZmZXIpLiBCdXQgdGhpcyBjb21wbGljYXRlcyB0aGUg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIFNvLCBub3QgdG8gaW5jcmVhc2Ugc2l6ZW9mKEFycmF5
QnVmZmVyKSwgd2UgdXNlIFBhY2tlZFJlZlB0ciBpbiBBcnJheUJ1ZmZlciwgd2hpY2ggaXMgUmVm
UHRyIHdoaWxlIHRoZSBwb2ludGVyIGlzIHBhY2tlZC4gVGhpcyBnaXZlcyB1cyA4IGJ5dGVzIHdo
aWNoIGlzCisgICAgICAgIHN1aXRhYmxlIGZvciBwbGFjaW5nIElubGluZVdhdGNocG9pbnRTZXQg
d2l0aG91dCBpbmNyZWFzaW5nIHNpemVvZihBcnJheUJ1ZmZlcikuIFdlIGFsc28gY29udmVydCBG
dW5jdGlvbjw+IGluIEFycmF5QnVmZmVyIHRvIFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPD4+LAor
ICAgICAgICBhbmQgc2hhcmUgR2lnYWNhZ2U6OmZyZWUgZGVzdHJ1Y3RvciBieSBtdWx0aXBsZSBB
cnJheUJ1ZmZlci4gVGhpcyBpcyBtZW1vcnkgZWZmaWNpZW50IHNpbmNlIHRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLCBhbmQgd2UgY2FuIHBhY2sgdGhpcyBmaWVsZCBlYXNpbHkuCisKKyAgICAgICAg
KiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlX
aXRoQnl0ZXNOb0NvcHkpOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRX
YXRjaHBvaW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hw
b2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6flNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpk
ZXN0cm95KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyQ29udGVudHM6Om1ha2VTaGFyZWQpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjp0cmFuc2ZlclRvKToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6Om5ldXRlcik6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2Zlcik6CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6bmV1dGVy
aW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TWVtb3J5OjpidWZmZXIpOgorCiAyMDE5LTEyLTEzICBKaW0gTWFzb24gIDxqbWFzb25A
aWJpbnguY29tPgogCiAgICAgICAgIFtHVEtdIFdlYktpdEdUSyBidWlsZCBoYW5ncyBvbiBnLWly
LXNjYW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggM2NjZjMwNjU2YjQ0NWNmYjMzZmE2YmRjZGUwZGFhNWI1MmFkNzI5Mi4u
YTU1MGFmOGNmMzhjMGJkMDUxMDI0NTdkNTQ2MWM0ZjRlMzUzZTcxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBQYWNrZWRSZWYgYW5kIFBhY2tlZFJlZlB0ci4gVGhleSBhcmUgUmVmIGFuZCBSZWZQdHIs
IGJ1dCBpdHMgaW50ZXJuYWwgcG9pbnRlciBpcyBwYWNrZWQuCisgICAgICAgIFNvIHdlIGNhbiBy
ZXByZXNlbnQgdGhlbSBpbiA2IGJ5dGVzIHdpdGggMSBieXRlIGFsaWdubWVudC4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OmFsaWdub2Yp
OgorICAgICAgICAqIHd0Zi9QYWNrZWRSZWYuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmguCisgICAg
ICAgICogd3RmL1BhY2tlZFJlZlB0ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmguCisgICAgICAg
ICogd3RmL1JlZlB0ci5oOgorICAgICAgICAoV1RGOjpSZWZQdHI6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUgY29uc3QpOgorICAgICAgICAoV1RGOjpSZWZQdHI6OnVuc3BlY2lmaWVkQm9v
bFR5cGVJbnN0YW5jZSBjb25zdCk6CisKIDIwMTktMTItMTMgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERlbnkgbWFjaCBsb29rdXAgYWNjZXNz
IHRvICIqLmFwcGxlLWV4dGVuc2lvbi1zZXJ2aWNlIiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggZWI5ZGMz
MDZiNDRmZjM1MDFmZjY0OWQyOWZmZTEyOTQxMjJkODViYy4uNDYwMzVhOWQxNmJkOWUzNTU5NWFj
YWQ4YmU3MjMzYWZjZTMzMTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1R5cGVkQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBl
ZEFycmF5LmNwcApAQCAtMTg0LDEwICsxODQsMTAgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
VHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkK
IAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJh
eVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgY3JlYXRlU2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4oWz1dKHZvaWQqIHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0
b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250ZXh0KTsKLSAgICB9
KTsKKyAgICB9KSk7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNyZWF0ZVR5cGVkQXJyYXkoZ2xv
YmFsT2JqZWN0LCBhcnJheVR5cGUsIFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoIC8gZWxlbWVu
dEJ5dGVTaXplKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwg
ZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTMxMiwxMCArMzEyLDEwIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFy
cmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzCiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCi0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKGJ5dGVzLCBieXRlTGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIGF1dG8gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgYnl0ZUxlbmd0aCwgY3JlYXRl
U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4oWz1dKHZvaWQqIHApIHsKICAgICAgICAgaWYgKGJ5dGVz
RGVhbGxvY2F0b3IpCiAgICAgICAgICAgICBieXRlc0RlYWxsb2NhdG9yKHAsIGRlYWxsb2NhdG9y
Q29udGV4dCk7Ci0gICAgfSk7CisgICAgfSkpOwogCiAgICAgSlNBcnJheUJ1ZmZlcioganNCdWZm
ZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJT
dHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTYxZDcwNWNjMmUzYzYxOWVjNTQ0Yjc2NmViNzRkMjhhODRmODhjNi4uM2RmZGU2
MzZkNTIwMjRhNjZiMTA3OGMzMjY4NTU1ODYyZjAzNWJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc1Miw3ICs3NTIsNiBAQAogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIg
LyogTm9kZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZD
OTIxNjFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTIxNTFCOTRGQjNFMDA3MURE
NjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi87IH07CiAJCTBGRkM5OUQxMTg0RUM4QUQwMDlD
MTBBQiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZDOTlE
NTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMzE4
NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0
RTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUMxNEVG
OTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuaCAq
LzsgfTsKQEAgLTMyNTMsOCArMzI1Miw2IEBACiAJCTBGRkI4MEJCMjBBNzk0NzAwMDA2QUFGNiAv
KiBKSVRDb2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRD
b2RlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTIxNTFCOTRG
QjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1Byb3BlcnR5VHlwZUtleS5oOyBwYXRoID0gZGZnL0RGR1Byb3BlcnR5
VHlwZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTlEMDE4NEVDOEFE
MDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnN0YW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkZDOTlE
MjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkM5
OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRCMTRF
RjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdDRkFQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZB
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkZGQzk0RDE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ1NFUGhhc2UuY3BwOyBwYXRoID0g
ZGZnL0RGR0NTRVBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NDMs
OCArNjk0MCw2IEBACiAJCQkJMEY2QjFDQjcxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tN
b2RlLmggKi8sCiAJCQkJQTdBOEFGMjUxN0FEQjVGMjAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNw
cCAqLywKIAkJCQlBN0E4QUYyNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLywK
LQkJCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0LmNwcCAqLywKLQkJCQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi8sCiAJCQkJMEYzMEZCNjAxREMyREU5NjAw
MzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCAqLywKIAkJCQlBN0E4QUYyNzE3QURC
NUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKIAkJCQlBN0E4QUYyODE3QURC
NUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggKi8sCkBAIC04ODg4LDcgKzg4ODMsNiBA
QAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGQzk5RDUxODRFRTMxODAwOUMx
MEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzMEZCNjExREMyREU5OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1
ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAppbmRleCA1M2NjYzc0ZjgyZDliZGUyNTMzYzJmNjkzZTY2NzZhOWJlZjMxYjY4Li5mZTVm
NTE5M2JkNTUxYjY2YjZjZjEyY2Y5NzViOTdlM2JiNTRkMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CkBAIC03MDMsNyArNzAzLDYgQEAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiBy
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKLXJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmNwcAogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCiBydW50aW1lL0FycmF5Q29u
c3RydWN0b3IuY3BwCiBydW50aW1lL0FycmF5Q29udmVudGlvbnMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKaW5kZXggYzI0
MzFmMDNmY2U5NjdjMmY2YTdlZTQwYWJmM2Q1NjE1NTQ2MzNiZS4uMDdiYWJlNzNiNGRlOTVmNjg2
ZmNkMGMyYjkwZmMyNTNiOTdkNWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnRTZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTM4LDE5ICszNywxNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiB2b2lkIEFycmF5QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9y
OjphZGQoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
LCBDb21tb25EYXRhJiBjb21tb24pCiB7Ci0gICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOwor
ICAgIC8vIHZpZXcgaXMgYWxyZWFkeSBmcm96ZW4uIElmIGl0IGlzIGRlYWxsb2NhdGVkLCBqZXR0
aXNvbmluZyBoYXBwZW5zLgogICAgIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCogd2F0
Y2hwb2ludCA9IG51bGxwdHI7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgd2F0Y2hwb2ludCA9IGNvbW1vbi53YXRj
aHBvaW50cy5hZGQoY29kZUJsb2NrKTsKICAgICB9Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KLSAgICAgICAgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmluZ1dhdGNocG9p
bnQtPnNldCgpLmFkZChXVEZNb3ZlKHdhdGNocG9pbnQpKTsKLSAgICBjb2RlQmxvY2stPmFkZENv
bnN0YW50KENvbmN1cnJlbnRKU0xvY2tlcihjb2RlQmxvY2stPm1fbG9jayksIG5ldXRlcmluZ1dh
dGNocG9pbnQpOworICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHZpZXctPnBvc3NpYmx5
U2hhcmVkQnVmZmVyKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXlCdWZmZXIpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4Ci0gICAgdm0uaGVhcC5hZGRSZWZlcmVuY2UobmV1dGVyaW5nV2F0Y2hwb2lu
dCwgdmlldy0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSk7CisgICAgYXJyYXlCdWZmZXItPm5ldXRl
cmluZ1dhdGNocG9pbnRTZXQoKS5hZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7CiB9CiAKIHZvaWQg
U3ltYm9sVGFibGVBZGFwdG9yOjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCmluZGV4IDc5NjQ5ODUzMzE2MDNjMzhiYmFlY2U0M2I0N2E4YmEwODc5YmQ4NzAuLmIzMjBm
NzA3Yzk1ZjEyMzkzODUxYmMzYjJiMmI0MmI5NTZkZDBiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xMzk5LDYgKzEzOTksNyBAQCBKU0FycmF5QnVmZmVyVmll
dyogR3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhKU1ZhbHVlIHZhbHVlKQogICAgIGlmICghdmll
dy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOworICAgIGZyZWV6ZSh2aWV3KTsKICAgICB3YXRjaHBvaW50cygpLmFkZExhemlseSh2
aWV3KTsKICAgICByZXR1cm4gdmlldzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCAwN2JkYTM4YTZlMjI4YWZkZDA0MWIyMTg2MGM3YWY0
MjMxMjMzNDc1Li4zZDBkYzI1MTYyMTcyNTgzYzkwMjk4MWJkZGJlZjdjMDRhYTgwODdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yNiwx
MyArMjYsMjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL0dpZ2FjYWdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCitzdGF0aWMgUmVmPFNo
YXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+
Pj4gZGVzdHJ1Y3RvcjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBkZXN0cnVjdG9yLmNvbnN0cnVj
dChjcmVhdGVTaGFyZWRUYXNrPHZvaWQodm9pZCopPihbXSAodm9pZCogcCkgeyBHaWdhY2FnZTo6
ZnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwKTsgfSkpOworICAgIH0pOworICAgIHJldHVybiBk
ZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKK30KKwogU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEo
ZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQpAQCAt
NDIsOCArNTEsMTAgQEAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLAogCiBTaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpCiB7Ci0gICAgLy8gRklYTUU6
IHdlIHNob3VsZG4ndCB1c2UgZ2V0VW5zYWZlIGhlcmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NzY5OAotICAgIG1fZGVzdHJ1Y3RvcihtX2RhdGEuZ2V0VW5zYWZl
KCkpOworICAgIGlmIChtX2Rlc3RydWN0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZG4ndCB1c2UgZ2V0VW5zYWZlIGhlcmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzY5OAorICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEuZ2V0VW5zYWZl
KCkpOworICAgIH0KIH0KIAogQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50
cygpCkBAIC04NCwxNSArOTUsMTcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpjbGVhcigp
CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6ZGVzdHJveSgpCiB7Ci0gICAgLy8gRklYTUU6
IFdlIHNob3VsZG4ndCB1c2UgZ2V0VW5zYWZlIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdldFVuc2Fm
ZSgpKTsKKyAgICBpZiAobV9kZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk3Njk4CisgICAgICAgIG1fZGVzdHJ1Y3Rvci0+cnVuKG1fZGF0YS5nZXRVbnNh
ZmUoKSk7CisgICAgfQogfQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKIHsK
LSAgICBtX2Rlc3RydWN0b3IgPSBbXSAodm9pZCopIHsgfTsKLSAgICBtX3NoYXJlZCA9IG51bGxw
dHI7CiAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2Rlc3RydWN0b3IgPSBudWxscHRyOwor
ICAgIG1fc2hhcmVkID0gbnVsbHB0cjsKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIApAQCAt
MTIzLDEzICsxMzYsMTMgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKIAogICAgIG1fc2l6ZUlu
Qnl0ZXMgPSBzaXplSW5CeXRlczsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9
IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7Ci0gICAgbV9kZXN0cnVjdG9yID0gW10gKHZvaWQqIHAp
IHsgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH07CisgICAgbV9kZXN0
cnVjdG9yID0gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9CiAKIHZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6bWFrZVNoYXJlZCgpCiB7CiAgICAgbV9zaGFyZWQgPSBhZG9wdFJlZihu
ZXcgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyhkYXRhKCksIHNpemVJbkJ5dGVzKCksIFdURk1v
dmUobV9kZXN0cnVjdG9yKSkpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2b2lkKikgeyB9Owor
ICAgIG1fZGVzdHJ1Y3RvciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKQEAgLTE1OCw5ICsxNzEs
OSBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1ZmZlckNvbnRl
bnRzJiBvdGhlcikKIHsKICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7CiAgICAgQVNTRVJUKG1f
c2hhcmVkKTsKLSAgICBvdGhlci5tX2Rlc3RydWN0b3IgPSBbXSAodm9pZCopIHsgfTsKLSAgICBv
dGhlci5tX3NoYXJlZCA9IG1fc2hhcmVkOwogICAgIG90aGVyLm1fZGF0YSA9IG1fZGF0YTsKKyAg
ICBvdGhlci5tX2Rlc3RydWN0b3IgPSBudWxscHRyOworICAgIG90aGVyLm1fc2hhcmVkID0gbV9z
aGFyZWQ7CiAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUluQnl0ZXM7CiAgICAgUkVM
RUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
OwogfQpAQCAtMTk3LDcgKzIxMCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyAgIGZyb20gdGhlIGNhZ2Uu
CiBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRl
cyhkYXRhLCBieXRlTGVuZ3RoLCBbXSAodm9pZCogcCkgeyBHaWdhY2FnZTo6ZnJlZShHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBwKTsgfSk7CisgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBi
eXRlTGVuZ3RoLCBwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSk7CiB9CiAKIC8vIEZJWE1F
OiBXZSBjYW5ub3QgdXNlIHRoaXMgZXhjZXB0IGlmIHRoZSBtZW1vcnkgY29tZXMgZnJvbSB0aGUg
Y2FnZS4KQEAgLTM3MSw2ICszODQsNyBAQCBib29sIEFycmF5QnVmZmVyOjp0cmFuc2ZlclRvKFZN
JiB2bSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0KQogCiAgICAgbV9jb250ZW50cy50cmFu
c2ZlclRvKHJlc3VsdCk7CiAgICAgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIo
dm0pOworICAgIG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldC5maXJlQWxsKHZtLCAiQXJyYXkgYnVm
ZmVyIHdhcyBuZXV0ZXJlZCIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODEsNiArMzk1
LDcgQEAgdm9pZCBBcnJheUJ1ZmZlcjo6bmV1dGVyKFZNJiB2bSkKICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzIHVudXNlZDsKICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyVG8odW51c2VkKTsKICAgICBu
b3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2Zlcih2bSk7CisgICAgbV9uZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmZpcmVBbGwodm0sICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9
CiAKIHZvaWQgQXJyYXlCdWZmZXI6Om5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVy
KFZNJiB2bSkKQEAgLTM4OSw4ICs0MDQsNiBAQCB2b2lkIEFycmF5QnVmZmVyOjpub3RpZnlJbmNv
bW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYgdm0pCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IGluY29taW5nUmVmZXJlbmNlQXQoaSk7CiAgICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyog
dmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgY2VsbCkpCiAgICAg
ICAgICAgICB2aWV3LT5uZXV0ZXIoKTsKLSAgICAgICAgZWxzZSBpZiAoQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50ID0ganNEeW5hbWljQ2FzdDxBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqPih2bSwgY2VsbCkpCi0gICAgICAgICAgICB3YXRjaHBv
aW50LT5maXJlQWxsKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuaAppbmRleCBlNmY1NWNlMGJkOTg5ZGZiMTVkNjY0MmQ2ZjhhYjVjM2Jm
NDUyZmQ5Li5kNjBiNWNmYjg2OGY5MmZmYzY1NGJjZGI1YTljYjU1ZjMwYjE5OGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTI3LDEwICsyNywx
MiBAQAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIgogI2luY2x1ZGUgIkdD
SW5jb21pbmdSZWZDb3VudGVkLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUg
IldlYWsuaCIKICNpbmNsdWRlIDx3dGYvQ2FnZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
UGFja2VkUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw3ICs0Niw4IEBAIGNsYXNz
IEFycmF5QnVmZmVyOwogY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgSlNBcnJheUJ1ZmZl
cjsKIAotdHlwZWRlZiBGdW5jdGlvbjx2b2lkKHZvaWQqKT4gQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb247Cit1c2luZyBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFJlZlB0cjxT
aGFyZWRUYXNrPHZvaWQodm9pZCopPj47Cit1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj47CiAKIGNs
YXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewogcHVibGljOgpAQCAtNTYsNyArNTksNyBA
QCBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQwogcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9
IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBE
YXRhVHlwZSBtX2RhdGE7Ci0gICAgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0
cnVjdG9yOworICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1
Y3RvcjsKICAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwogfTsKIApAQCAtOTgsMTAgKzEwMSwx
MCBAQCBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICB2b2lkIGNvcHlUbyhBcnJheUJ1
ZmZlckNvbnRlbnRzJik7CiAgICAgdm9pZCBzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYp
OwogCi0gICAgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAg
IFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKICAgICB1c2luZyBE
YXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRy
PjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CisgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24gbV9kZXN0cnVjdG9yOworICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzPiBtX3NoYXJlZDsKICAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwogfTsKIApA
QCAtMTQ4LDYgKzE1MSw3IEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdS
ZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICB2b2lkIG5ldXRlcihWTSYpOwogICAgIGJv
b2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQorICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIG5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX25ldXRl
cmluZ1dhdGNocG9pbnRTZXQ7IH0KIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZEYXRh
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFycmF5QnVmZmVyLCBtX2NvbnRlbnRzKSArIE9C
SkVDVF9PRkZTRVRPRihBcnJheUJ1ZmZlckNvbnRlbnRzLCBtX2RhdGEpOyB9CiAKQEAgLTE2NSwx
NCArMTY5LDE1IEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3Vu
dGVkPEFycmF5QnVmZmVyPiB7CiAgICAgdm9pZCBub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZU
cmFuc2ZlcihWTSYpOwogCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBtX2NvbnRlbnRzOworICAg
IElubGluZVdhdGNocG9pbnRTZXQgbV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0IHsgSXNXYXRjaGVk
IH07CitwdWJsaWM6CisgICAgV2VhazxKU0FycmF5QnVmZmVyPiBtX3dyYXBwZXI7Citwcml2YXRl
OgogICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fcGluQ291bnQ7CiAgICAgYm9vbCBtX2lzV2FzbU1l
bW9yeTsKICAgICAvLyBtX2xvY2tlZCA9PSB0cnVlIG1lYW5zIHRoYXQgc29tZSBBUEkgdXNlciBm
ZXRjaGVkIG1fY29udGVudHMgZGlyZWN0bHkgZnJvbSBhIFR5cGVkQXJyYXkgb2JqZWN0LAogICAg
IC8vIHRoZSBidWZmZXIgaXMgYmFja2VkIGJ5IGEgV2ViQXNzZW1ibHkuTWVtb3J5LCBvciBpcyBh
IFNoYXJlZEFycmF5QnVmZmVyLgogICAgIGJvb2wgbV9sb2NrZWQ7Ci0KLXB1YmxpYzoKLSAgICBX
ZWFrPEpTQXJyYXlCdWZmZXI+IG1fd3JhcHBlcjsKIH07CiAKIHZvaWQqIEFycmF5QnVmZmVyOjpk
YXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYjE2ZDgxMmE0YmM1N2M4Y2VmM2FiN2FjYTdkMzM4YzVjMGM5M2Jm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgotCi0jaW5jbHVkZSAiSlND
SW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6c19pbmZvID0gewotICAgICJBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTZXQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgIENS
RUFURV9NRVRIT0RfVEFCTEUoQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KQotfTsK
LQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQoVk0mIHZtKQotICAgIDogQmFzZSh2bSwgdm0uYXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLmdldCgpKQotICAgICwgbV9zZXQoYWRvcHRSZWYoKm5l
dyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQotewotfQotCi12b2lkIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCi17Ci0gICAgc3RhdGlj
X2Nhc3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4oY2VsbCktPkFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6fkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldCgpOwotfQotCi1BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlKFZNJiB2bSkKLXsKLSAgICBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIHJlc3VsdCA9IG5ldwotICAgICAgICAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldD4odm0uaGVh
cCkpCi0gICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCh2bSk7Ci0gICAg
cmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotU3Ry
dWN0dXJlKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0pCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAwLCBqc051bGwo
KSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotdm9p
ZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmZpcmVBbGwoKQotewotICAgIG1f
c2V0LT5maXJlQWxsKHZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzczN2NjZTU4YzFjOTdkMTE1YTYwOWNkYjMwZDAx
MTE5NDEyM2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgotCi1uYW1lc3BhY2UgSlND
IHsKLQotY2xhc3MgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCi0gICAgREVDTEFSRV9JTkZPOwotICAgIAotICAg
IHN0YXRpYyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIGNyZWF0ZShWTSYpOwot
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgCi0gICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJik7Ci0gICAgCi0gICAgV2F0Y2hwb2ludFNldCYgc2V0KCkg
eyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KLSAgICAKLSAgICB2b2lkIGZpcmVBbGwoKTsKLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoVk0m
KTsKLSAgICAKLSAgICBSZWY8V2F0Y2hwb2ludFNldD4gbV9zZXQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBhZjBhYTRlNzM1
ZDZkOGJiNDg5ZTgwMzgxZDAwYjY1MTJmZWVmODMwLi5mNTM5ZjUwNWI2YTgxNTc0MjVjMTljYWZh
YmI0YjY4OTVjYzdmZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiVk0uaCIKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJC
aWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCkBAIC00NjYsNyArNDY1LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgq
dGhpcywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAg
YXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLnNldCgqdGhpcywgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMpKTsKICAg
ICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRF
dmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhZjIwMTk4MGU1MGE5M2JiNjAxOGZiMzZkYmRm
NWZiMTQ0ODdlNDMxLi5iOTQzOWI2OTliMzc2Y2U3ZjJhNTM2YWY4YjEyMGJmY2E4MWQ3NzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY2OCw3ICs2NjgsNiBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3RydWN0dXJl
OwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRFdmFsQ29kZUJsb2Nr
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TWVtb3J5LmNwcAppbmRleCAzZjhiZTM2ZWY2ZmIwMWM2ZDcwZDczZTgzM2RmMjY1
MTRjNTEwOWFhLi4xM2M2MmY2ODM0MDY2N2E3NDE4NWU4OGFmYmM3ODliYjdmNzAyYzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcApAQCAtNzksNyArNzksNyBAQCBKU0FycmF5QnVmZmVyKiBKU1dlYkFzc2VtYmx5TWVt
b3J5OjpidWZmZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAg
Ly8gV2UgY2FuJ3QgdXNlIGEgcmVmIGhlcmUgc2luY2UgaXQgZG9lc24ndCBoYXZlIGEgY29weSBj
b25zdHJ1Y3Rvci4uLgogICAgIFJlZjxXYXNtOjpNZW1vcnk+IHByb3RlY3RlZE1lbW9yeSA9IG1f
bWVtb3J5LmdldCgpOwotICAgIGF1dG8gZGVzdHJ1Y3RvciA9IFtwcm90ZWN0ZWRNZW1vcnkgPSBX
VEZNb3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9OworICAgIGF1dG8gZGVzdHJ1Y3Rv
ciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtwcm90ZWN0ZWRNZW1vcnkgPSBXVEZN
b3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMobWVtb3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUo
KSwgV1RGTW92ZShkZXN0cnVjdG9yKSk7CiAgICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7
CiAgICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwgdGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OkRlZmF1bHQpLCBtX2J1ZmZlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGU4ZWMxNTlhNzE0NGY2MWFkNTgwZTU2MDVlYzQyN2U2
OWMzOTg4ZS4uNWJkN2FiNDNkZTA2Zjg5M2MxNjRkNTk5YzZjYzRmNWZiMTdiMDViYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzMsNiArNjczLDggQEAK
IAkJRTM0Q0QwRDAyMjgxMEEwMjAwMjBEMjk5IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjQyMTI3Qjg1QjAw
QzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVbmFsaWduZWRBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
MEM3NjUyMTI3Qjg1QzAwQzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzY4OTVDQjIzQTQ0NUNEMDA4REQ0QzggLyogUGFja2VkUmVmLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhY2tlZFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY4OTVDQzIzQTQ0
NUVFMDA4REQ0QzggLyogUGFja2VkUmVmUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZFJlZlB0
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkUy
MEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhD
NDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVVRpbWVDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDc3LDYgKzEwNzksOCBAQAogCQkJCUE4QTQ3MkRCMTUxQTgyNUIwMDQx
MjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5oICovLAogCQkJCUUzNENEMEQwMjI4MTBBMDIwMDIwRDI5
OSAvKiBQYWNrZWQuaCAqLywKIAkJCQlBOEE0NzJERjE1MUE4MjVCMDA0MTIzRkYgLyogUGFja2Vk
SW50VmVjdG9yLmggKi8sCisJCQkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJl
Zi5oICovLAorCQkJCUUzNjg5NUNDMjNBNDQ1RUUwMDhERDRDOCAvKiBQYWNrZWRSZWZQdHIuaCAq
LywKIAkJCQlBOEE0NzJFMDE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUFsbG9jYXRpb24uaCAqLywK
IAkJCQlBOEE0NzJFMzE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCAqLywKIAkJCQlB
OEE0NzJFNDE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFmY2M2MGUyMjAzMjVjYjEwOWZlZDlhZWY0ODFiZDljOTZmMzhmZjUuLmRhZTRh
NzFiMjhkMTMwNDI0YzBiZDczMWJlNDE2NDNmMDUyYjNlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CkBAIC0xNTUsNiArMTU1LDggQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIE9wdGlvbmFs
LmgKICAgICBPcmRlck1ha2VyLmgKICAgICBQYWNrZWQuaAorICAgIFBhY2tlZFJlZi5oCisgICAg
UGFja2VkUmVmUHRyLmgKICAgICBQYWNrZWRJbnRWZWN0b3IuaAogICAgIFBhZ2VBbGxvY2F0aW9u
LmgKICAgICBQYWdlQmxvY2suaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAppbmRleCA4MzlkM2M4NzMxNWU1MDEwOGJjOTcxODA2
Y2E5NDU5OGMzMTAzOWViLi5iMjJmYzc2MWQ0Mjk3NGI5ODEyNWJiN2U3ZDFjMmQxZjlhNTc4MzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QYWNrZWQuaApAQCAtMTYzLDYgKzE2MywxMCBAQCBjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsK
ICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KICAgICBUJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9y
IGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRl
Z2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFsaWduZWRQdHI6OipVbnNwZWNpZmll
ZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9zdG9yYWdlIDogbnVsbHB0cjsgfQog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQogCiAg
ICAgUGFja2VkQWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZhbHVlKQpAQCAtMTcyLDkgKzE3Niw5
IEBAIGNsYXNzIFBhY2tlZEFsaWduZWRQdHIgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNz
IFU+Ci0gICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgVCogZXhjaGFuZ2UoVSYmIG5l
d1ZhbHVlKQogICAgIHsKLSAgICAgICAgVCBvbGRWYWx1ZSA9IGdldCgpOworICAgICAgICBUKiBv
bGRWYWx1ZSA9IGdldCgpOwogICAgICAgICBzZXQoc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7
CiAgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9CkBAIC0xODksMTUgKzE5MywxNSBAQCBj
bGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5cGU+PgogICAgIHZvaWQg
c3dhcChPdGhlciYgb3RoZXIpCiAgICAgewotICAgICAgICBUIHQxID0gZ2V0KCk7Ci0gICAgICAg
IFQgdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgVCog
dDIgPSBvdGhlci5nZXQoKTsKICAgICAgICAgc2V0KHQyKTsKICAgICAgICAgb3RoZXIuc2V0KHQx
KTsKICAgICB9CiAKLSAgICB2b2lkIHN3YXAoVCYgdDIpCisgICAgdm9pZCBzd2FwKFQqIHQyKQog
ICAgIHsKLSAgICAgICAgVCB0MSA9IGdldCgpOworICAgICAgICBUKiB0MSA9IGdldCgpOwogICAg
ICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKICAgICAgICAgc2V0KHQxKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1BhY2tlZFJl
Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE0ZWNkZmY4ZDc2ZTM3YzdmMzlmYjhhZDlkODc3YzY5MDUzNDIxZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaApAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5o
PgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFBhY2tl
ZFJlZiA9IFJlZjxULCBQYWNrZWRQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwordXNpbmcgV1RGOjpQYWNrZWRSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWNr
ZWRSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1BhY2tlZFJlZlB0ci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMy
NDdkN2RmYjY1N2ZlYTNlZTc2MDNmMDcyMjc0MjY3NTBkNzZkMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFBhY2tlZFJlZlB0ciA9IFJl
ZlB0cjxULCBQYWNrZWRQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNp
bmcgV1RGOjpQYWNrZWRSZWZQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmluZGV4IDViZWM2YzdlZTIwZTg2NzIzNTI3OTMw
NzI4ZThjZjE4M2RiOWI0OGIuLjZkNGM2NDQ0ZTdlYWYxYWExZWFhZjQzMjlhNWY2OThmMDkzZWQw
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1JlZlB0ci5oCkBAIC04MSw4ICs4MSw4IEBAIGNsYXNzIFJlZlB0ciB7CiAgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KIAogICAgIC8vIFRoaXMgY29udmVy
c2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3Qg
dG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQqIChSZWZQdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjptX3B0ciA6IG51bGxwdHI7IH0KKyAgICB1c2luZyBV
bnNwZWNpZmllZEJvb2xUeXBlID0gdm9pZCAoUmVmUHRyOjoqKSgpIGNvbnN0OworICAgIG9wZXJh
dG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZSZWZQdHI6
OnVuc3BlY2lmaWVkQm9vbFR5cGVJbnN0YW5jZSA6IG51bGxwdHI7IH0KIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9CiAgICAgCkBAIC0xMDIs
NiArMTAyLDggQEAgY2xhc3MgUmVmUHRyIHsKICAgICBSZWZQdHIgY29weVJlZigpIGNvbnN0ICYg
V0FSTl9VTlVTRURfUkVUVVJOIHsgcmV0dXJuIFJlZlB0cihtX3B0cik7IH0KIAogcHJpdmF0ZToK
KyAgICB2b2lkIHVuc3BlY2lmaWVkQm9vbFR5cGVJbnN0YW5jZSgpIGNvbnN0IHsgfQorCiAgICAg
ZnJpZW5kIFJlZlB0ciBhZG9wdFJlZjxULCBQdHJUcmFpdHM+KFQqKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBmcmllbmQgY2xhc3MgUmVmUHRyOwogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODg5ZTM1YjU2NGUwZjVk
NDYxM2U4YjQ2ZGYzYjg2MzhhMzdmNzAyNy4uMDNjOTA5Nzk3M2MyMWNhOTRmOGViYzVjNzY2MTNm
NTYzZjgwODE4MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHRlc3RzIGZvciBQYWNrZWRSZWYgYW5kIFBhY2tlZFJlZlB0ci4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnBhc3NXaXRoUmVmKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpQYWNr
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tl
ZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpkZXJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpE
ZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcml2ZWRQYWNrZWRSZWZDaGVja2lu
Z1JlZkxvZ2dlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVm
UHRyLmNwcDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRy
LmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZjEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29uc3RSZWZDb3VudGVkOjpjcmVh
dGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVyblJlZkNvdW50ZWRSZWYpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tlZFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmxvZ2dlck5hbWUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6
OnJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxv
Z2dlcjo6ZGVyZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGhyZWFkU2FmZVJlZkNvdW50
ZWRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUaHJlYWRTYWZlUmVm
Q291bnRlZE9iamVjdDo6flRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6fk1h
aW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUmVmUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmYxKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnJldHVybkNvbnN0UmVmQ291bnRlZFJlZik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpyZXR1cm5SZWZDb3VudGVkUmVmKToKKwogMjAxOS0xMi0xMyAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggcHJlcGFyZS1DaGFu
Z2VMb2cgYWJvdXQgSmF2YVNjcmlwdCBhc3luYyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CmluZGV4IDg3Zjg0NDIxMDFhMGRmN2ZkZjJlYzBkMTRiMTVmMDc2NDJhMzRlNzIu
LmM5MTcwMzYzZWUzYjA0NTBjNjMxMTNhYWE1OGI1ZDk2ZjYxMWJlNTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dApAQCAtNjUsNiArNjUsOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAg
ICAgVGVzdHMvV1RGL09wdGlvblNldC5jcHAKICAgICBUZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAg
ICAgVGVzdHMvV1RGL1BhY2tlZC5jcHAKKyAgICBUZXN0cy9XVEYvUGFja2VkUmVmLmNwcAorICAg
IFRlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwCiAgICAgVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3Bw
CiAgICAgVGVzdHMvV1RGL1ByaW9yaXR5UXVldWUuY3BwCiAgICAgVGVzdHMvV1RGL1JlZEJsYWNr
VHJlZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmNkY2E3MzViMGU0OWZmOWY0OWYx
OGNhOGFjNzU0NWZkZTkwODExYi4uN2MyZjhmMzQzZTA2MjdkZGJjODIxMTRjZjFjZTAzMTdlODg1
NGY4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk2Nyw2ICs5NjcsOCBAQAogCQlFMzVG
QzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RkM3QjEyMkI4MkE2
RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLzsgfTsKIAkJRTM3M0Q3
OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25h
bHMuY3BwICovOyB9OwogCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0
MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovOyB9OworCQlFMzhENjVDQTIzQTQ1
RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYu
Y3BwICovOyB9OworCQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2NUM5
MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwICovOyB9OwogCQlFM0ExRTc3RjIx
QjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzdFMjFCMjVCMzkwMDhDNjAw
NyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwICovOyB9OwogCQlFM0ExRTc4MjIxQjI1QjdB
MDA4QzYwMDcgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTFFNzgwMjFCMjVCNzkwMDhDNjAwNyAvKiBVUkwuY3BwICovOyB9OwogCQlF
M0ExRTc4NTIxQjI1QjkxMDA4QzYwMDcgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzg0MjFCMjVCOTEwMDhDNjAwNyAv
KiBVUkxQYXJzZXIuY3BwICovOyB9OwpAQCAtMjQ5Miw2ICsyNDk0LDggQEAKIAkJRTM1RkM3QjEy
MkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJD
IC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEEwRDM0MUZE
NTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzhENjVDOTIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJlZlB0ci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAvKiBT
aWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25hbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4QkMwRjIwNDFDNzYzMDAzODcx
MzYgLyogVW5pcXVlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVW5pcXVlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ExRTc3
RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzU5LDYgKzM3NjMsOCBAQAogCQkJCTFBRkRF
NjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1MEQ4QzgxQzg2
NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJRTMyQjU0OTEyMjgxMEFDMDAw
OEFENzAyIC8qIFBhY2tlZC5jcHAgKi8sCisJCQkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8q
IFBhY2tlZFJlZi5jcHAgKi8sCisJCQkJRTM4RDY1QzkyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tl
ZFJlZlB0ci5jcHAgKi8sCiAJCQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdM
b3QuY3BwICovLAogCQkJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVl
LmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNw
cCAqLywKQEAgLTQ0NDgsNiArNDQ1NCw4IEBACiAJCQkJMUE3N0JBQTMxRDlBRkZGQzAwNUZDNTY4
IC8qIE9wdGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYwMjFEMEE1OTBDMDBG
RUJDRjMgLyogT1NPYmplY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyQjU0OTIyMjgx
MEFDNDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzhENjVDQTIz
QTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEQ2
NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGNTkxRDBBNTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZEJsYWNrVHJl
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BhY2tlZFJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNr
ZWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YWJlYjc0YzA1NmRhOGVmMTQyMTQ0YzBjM2M3MTU3YmUw
OGU5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YWNrZWRSZWYuY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1BhY2tlZFJl
Zi5oPgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitURVNUKFdURl9QYWNrZWRSZWYsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYo
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLm5hbWUsICZyZWYtPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZjxSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cmVmLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
K30KKworVEVTVChXVEZfUGFja2VkUmVmLCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dl
ciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgICAgICByZWYgPSBiOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7Cisg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwg
cmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVm
ID0gYzsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihjKSBkZXJlZihh
KSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5w
dHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9IGFkb3B0UmVmKGIp
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihi
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxS
ZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworfQorCitzdGF0aWMgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcGFzc1dp
dGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCit7CisgICAgcmV0dXJuIFdU
Rk1vdmUocmVmZXJlbmNlKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBSZXR1cm5WYWx1ZSkK
K3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOwor
ICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8
UmVmTG9nZ2VyPiByZWYocGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4oYSkpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBwYXNzV2l0
aFJlZihiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJl
ZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAg
ICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBh
Y2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxs
cHRyLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxEZXJpdmVkUmVmTG9nZ2VyPiBkZXJp
dmVkUmVmZXJlbmNlKGEpOworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBiYXNlUmVmZXJl
bmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVyZW5jZS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisK
K1RFU1QoV1RGX1BhY2tlZFJlZiwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAg
IFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+
IHAxKGEpOworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgbG9n
KCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYiwgcDIucHRyKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZiLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIucHRyKCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBhY2tl
ZFJlZjxSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7
CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLnB0
cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYo
YSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdHJ1Y3QgUGFja2Vk
UmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgeworICAgIFBhY2tlZFJlZkNoZWNraW5n
UmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBk
ZXJlZigpOworICAgIGNvbnN0IFBhY2tlZFJlZjxQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj4q
IHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9OworfTsKKworc3RydWN0IERlcml2ZWRQYWNrZWRSZWZD
aGVja2luZ1JlZkxvZ2dlciA6IFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIHsKKyAgICBEZXJp
dmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7Cit9OworCitQ
YWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29u
c3QgY2hhciogbmFtZSkKKyAgICA6IFJlZkxvZ2dlciB7IG5hbWUgfQoreworfQorCit2b2lkIFBh
Y2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykK
KyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAi
ICI7CisgICAgUmVmTG9nZ2VyOjpyZWYoKTsKK30KKwordm9pZCBQYWNrZWRSZWZDaGVja2luZ1Jl
ZkxvZ2dlcjo6ZGVyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkg
PDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAiICI7CisgICAgUmVmTG9n
Z2VyOjpkZXJlZigpOworfQorCitEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRl
cml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDog
UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKworVEVTVChXVEZfUGFj
a2VkUmVmLCBBc3NpZ25CZWZvcmVEZXJlZikKK3sKKyAgICBEZXJpdmVkUGFja2VkUmVmQ2hlY2tp
bmdSZWZMb2dnZXIgYSgiYSIpOworICAgIFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGIoImIi
KTsKKyAgICBEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYygiYyIpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9
ICZyZWY7CisgICAgICAgIHJlZiA9IGI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRy
OworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFj
a2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNr
ID0gJnJlZjsKKyAgICAgICAgYy5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGM7
CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBjLnNsb3RUb0NoZWNr
ID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSBy
ZWYoYykgc2xvdD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+
IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0g
YWRvcHRSZWYoYik7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFja2Vk
UmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYu
cHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0g
JnJlZjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYyk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sg
PSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1jIGRl
cmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UGFja2VkUmVmUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmIzYTkxY2M4YTk1NGNjN2ZlZjdkZGJiZmY0
MDIwMjAzODQxZTZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUGFja2VkUmVmUHRyLmNwcApAQCAtMCwwICsxLDU5OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgIlV0
aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZi5oPgorI2luY2x1ZGUgPHd0
Zi9QYWNrZWRSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQmFzaWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CisKKyAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwg
JnB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcHRyID0gJmE7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZh
OworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBw
MTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9n
Z2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
Mi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBh
Y2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0
ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7Cisg
ICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RF
U1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQoreworICAgIERlcml2
ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4g
cGFzc1JlZihhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92
ZShwYXNzUmVmKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQWRvcHQpCit7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7CisKKyAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFzc2lnbm1l
bnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIi
KTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEg
PSBwMjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJl
ZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEVY
UEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZM
b2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+
IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRy
ID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOwor
ICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgRVhQRUNUX0VR
KCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAg
ICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykg
fCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwg
IjsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
fCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAg
ICAgcHRyID0gYWRvcHRSZWYoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHB0ci5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEo
JmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVm
KGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXdhcm5pbmctb3B0aW9uIgorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1hc3NpZ24tb3ZlcmxvYWRlZCIKKyNlbmRpZgor
ICAgICAgICBwdHIgPSBwdHI7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8
IHJlZihhKSBkZXJlZihhKSB8IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nl
bGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYgQ09NUElM
RVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tl
ZFJlZlB0ciwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBi
KCJiIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsK
KyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihi
KSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0
KCkpOworICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRl
cmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZf
UGFja2VkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxs
KCk7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2UpCit7
CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAg
ICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRy
PFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIg
PSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAg
ICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRy
PFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsK
KyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAg
ICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
Mi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxv
Z2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAy
LmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMs
IHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3Zl
KHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
UShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdGF0aWMgUmVmUHRyPFJlZkxvZ2dlcj4gZjEoUmVm
TG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+KCZs
b2dnZXIpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJldHVyblZhbHVlKQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBmMShhKTsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBhdXRvIHB0ciA9IGYxKGEpOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisK
K3N0cnVjdCBDb25zdFJlZkNvdW50ZWQgOiBSZWZDb3VudGVkPENvbnN0UmVmQ291bnRlZD4gewor
ICAgIHN0YXRpYyBSZWY8Q29uc3RSZWZDb3VudGVkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IENvbnN0UmVmQ291bnRlZCk7IH0KK307CisKK3N0YXRpYyBjb25zdCBDb25zdFJlZkNv
dW50ZWQmIHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdl
dCgpOworfQorc3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7Cisg
ICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIENv
bnN0KQoreworICAgIC8vIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBh
biBlcnJvci4KKyAgICBhdXRvIGEgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAgIFBh
Y2tlZFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGIgPSBXVEZNb3ZlKGEpOworICAgIFBhY2tl
ZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOworICAgIFBhY2tlZFJl
Zjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsK
KyAgICBQYWNrZWRSZWZQdHI8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0
UmVmQ291bnRlZFJlZigpOworICAgIFBhY2tlZFJlZlB0cjxDb25zdFJlZkNvdW50ZWQ+IGYgPSBD
b25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJl
ZkNvdW50ZWQ+IGcgPSBmOworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+
IGgoZik7CisgICAgUGFja2VkUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZD
b3VudGVkUmVmKCkpOworfQorCitzdHJ1Y3QgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIg
OiBSZWZMb2dnZXIgeworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNo
YXIqIG5hbWUpOworICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0
IFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4qIHNsb3RUb0NoZWNr
IHsgbnVsbHB0ciB9OworfTsKKworUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tl
ZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBSZWZMb2dn
ZXIgeyBuYW1lIH0KK3sKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGxvZ2dlck5hbWUoY29uc3Qg
UGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiYgcG9pbnRlcikKK3sK
KyAgICByZXR1cm4gcG9pbnRlciA/ICZwb2ludGVyLT5uYW1lIDogIm51bGwiOworfQorCit2b2lk
IFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9D
aGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVj
aykgPDwgIiAiOworICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQgUGFja2VkUmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXI6OmRlcmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAg
ICAgIGxvZygpIDw8ICJzbG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hlY2spIDw8ICIgIjsK
KyAgICBSZWZMb2dnZXI6OmRlcmVmKCk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNz
aWduQmVmb3JlRGVyZWYpCit7CisgICAgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgi
YSIpOworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsK
KyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgm
YSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4g
cDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xv
dFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAx
ID0gcDI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RU
b0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBzbG90PWEgcmVmKGIpIHNsb3Q9
YiBkZXJlZihhKSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcHRyOworICAgICAgICBi
LnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIGEuc2xvdFRv
Q2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVm
KGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
ICZwdHI7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hl
Y2sgPSAmcDE7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihiKSB8IHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbEJl
Zm9yZURlcmVmKQoreworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWZQdHI7CisgICAg
ICAgIHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCisvLyBGSVhNRTogRW5hYmxlIHRoZXNl
IHRlc3RzIG9uY2UgV2luIHBsYXRmb3JtIHN1cHBvcnRzIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bgorI2lmISBQTEFURk9STShXSU4pCisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgYm9vbCBp
c0Rlc3Ryb3llZEluTWFpblRocmVhZDsKK3N0cnVjdCBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVj
dCA6IFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiB7Cisg
ICAgc3RhdGljIFJlZjxUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdD4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk7IH0KKworICAgIH5U
aHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCgpCisgICAgeworICAgICAgICBpc0Rlc3Ryb3llZElu
TWFpblRocmVhZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
Cit9OworCitzdHJ1Y3QgTWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0IDogVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0LCBXVEY6OkRlc3RydWN0
aW9uVGhyZWFkOjpNYWluPiB7CisgICAgc3RhdGljIFJlZjxNYWluVGhyZWFkU2FmZVJlZkNvdW50
ZWRPYmplY3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFpblRocmVhZFNhZmVS
ZWZDb3VudGVkT2JqZWN0KTsgfQorCisgICAgfk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVj
dCgpCisgICAgeworICAgICAgICBpc0Rlc3Ryb3llZEluTWFpblRocmVhZCA9IGlzTWFpblRocmVh
ZCgpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9Cit9OworCitURVNUKFdURl9QYWNrZWRS
ZWZQdHIsIFJlbGVhc2VJbk5vbk1haW5UaHJlYWQpCit7CisgICAgZG9uZSA9IGZhbHNlOworICAg
IFRocmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q6
OmNyZWF0ZSgpXSB7IH0pOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisK
KyAgICBFWFBFQ1RfRkFMU0UoaXNEZXN0cm95ZWRJbk1haW5UaHJlYWQpOworfQorCitURVNUKFdU
Rl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VJbk5vbk1haW5UaHJlYWREZXN0cm95SW5NYWluVGhyZWFk
KQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgiIiwgW29iamVjdCA9IE1haW5UaHJlYWRTYWZlUmVm
Q291bnRlZE9iamVjdDo6Y3JlYXRlKCldIHsgfSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9UUlVFKGlzRGVzdHJveWVkSW5NYWluVGhyZWFkKTsK
K30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCmluZGV4IDA5ODgzMDZkZjg0NmY4M2QzNTJhZDg3
ODQzZDkzNGQ2N2Q5NzEwMTIuLmY4ODM1OWEwYmFhMWY4MWM5OGFmYjdkZWRjZWZhZDczZWE4N2Ux
YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcApAQCAtMzkxLDcg
KzM5MSw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIH0KIAotUmVmUHRyPFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCitzdGF0aWMg
UmVmUHRyPFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCiB7CiAgICAgcmV0dXJuIFJl
ZlB0cjxSZWZMb2dnZXI+KCZsb2dnZXIpOwogfQpAQCAtNDE1LDEyICs0MTUsMTIgQEAgc3RydWN0
IENvbnN0UmVmQ291bnRlZCA6IFJlZkNvdW50ZWQ8Q29uc3RSZWZDb3VudGVkPiB7CiAgICAgc3Rh
dGljIFJlZjxDb25zdFJlZkNvdW50ZWQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29uc3RSZWZDb3VudGVkKTsgfQogfTsKIAotY29uc3QgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5D
b25zdFJlZkNvdW50ZWRSZWYoKQorc3RhdGljIGNvbnN0IENvbnN0UmVmQ291bnRlZCYgcmV0dXJu
Q29uc3RSZWZDb3VudGVkUmVmKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29uc3RS
ZWZDb3VudGVkPiBpbnN0YW5jZTsKICAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7CiB9Ci1Db25z
dFJlZkNvdW50ZWQmIHJldHVyblJlZkNvdW50ZWRSZWYoKQorc3RhdGljIENvbnN0UmVmQ291bnRl
ZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENv
bnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CiAgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385665</attachid>
            <date>2019-12-13 17:53:26 -0800</date>
            <delta_ts>2019-12-13 18:05:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213175326.patch</filename>
            <type>text/plain</type>
            <size>74186</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODgzZDhkY2RmODAyYWJiMGJlZGRmNzY2ODY4YjI4OTlkZTVhNTUyLi45NGI5YWQ4Y2E4MGJlZDdl
MWUzOTQwYTBmOGYwYmU5MWUxOGNlYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgVGhlIG1haW4gcmVhc29uIHdo
eSB3ZSBhcmUgdXNpbmcgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGlzIG5vdCB0
byBpbmNyZWFzZSBzaXplb2YoQXJyYXlCdWZmZXIpLiBCdXQgdGhpcyBjb21wbGljYXRlcyB0aGUg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIFNvLCBub3QgdG8gaW5jcmVhc2Ugc2l6ZW9mKEFycmF5
QnVmZmVyKSwgd2UgdXNlIFBhY2tlZFJlZlB0ciBpbiBBcnJheUJ1ZmZlciwgd2hpY2ggaXMgUmVm
UHRyIHdoaWxlIHRoZSBwb2ludGVyIGlzIHBhY2tlZC4gVGhpcyBnaXZlcyB1cyA4IGJ5dGVzIHdo
aWNoIGlzCisgICAgICAgIHN1aXRhYmxlIGZvciBwbGFjaW5nIElubGluZVdhdGNocG9pbnRTZXQg
d2l0aG91dCBpbmNyZWFzaW5nIHNpemVvZihBcnJheUJ1ZmZlcikuIFdlIGFsc28gY29udmVydCBG
dW5jdGlvbjw+IGluIEFycmF5QnVmZmVyIHRvIFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPD4+LAor
ICAgICAgICBhbmQgc2hhcmUgR2lnYWNhZ2U6OmZyZWUgZGVzdHJ1Y3RvciBieSBtdWx0aXBsZSBB
cnJheUJ1ZmZlci4gVGhpcyBpcyBtZW1vcnkgZWZmaWNpZW50IHNpbmNlIHRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLCBhbmQgd2UgY2FuIHBhY2sgdGhpcyBmaWVsZCBlYXNpbHkuCisKKyAgICAgICAg
KiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlX
aXRoQnl0ZXNOb0NvcHkpOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRX
YXRjaHBvaW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hw
b2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHM6On5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50czo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
dHJhbnNmZXJUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXIpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6Om5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKwogMjAxOS0xMi0xMyAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBIZWFwOjpmaW5hbGl6
ZSBmdW5jdGlvbiB0aGF0IHRha2VzIFdURjo6RnVuY3Rpb248dm9pZCgpPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YmE4ZTBh
N2IxNzQ2MDEwNzdlNjUzYmZlZmZkYTFlZTQzOGI0Y2FkLi4wNWYzOTk0NDhiNWU4NWUwMTk5OGJm
NWZiNTk3ODViZTc4YTM2YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEyLTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBhY2tlZFJlZiBhbmQgUGFj
a2VkUmVmUHRyLiBUaGV5IGFyZSBSZWYgYW5kIFJlZlB0ciwgYnV0IGl0cyBpbnRlcm5hbCBwb2lu
dGVyIGlzIHBhY2tlZC4KKyAgICAgICAgU28gd2UgY2FuIHJlcHJlc2VudCB0aGVtIGluIDYgYnl0
ZXMgd2l0aCAxIGJ5dGUgYWxpZ25tZW50LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9QYWNrZWQuaDoKKyAgICAgICAgKFdURjo6YWxpZ25vZik6CisgICAgICAgICogd3RmL1BhY2tl
ZFJlZi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUGFja2VkUmVmUHRy
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUmVmUHRyLmg6CisgICAg
ICAgIChXVEY6OlJlZlB0cjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlJlZlB0cjo6dW5zcGVjaWZpZWRCb29sVHlwZUluc3RhbmNlIGNvbnN0KToK
KwogMjAxOS0xMi0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBIZWFwOjpmaW5hbGl6ZSBmdW5jdGlvbiB0aGF0IHRha2VzIFdURjo6RnVuY3Rpb248
dm9pZCgpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzNjJhMmZkNWRmY2NhNjA2YmY0MTJjMjdiN2ExYmE0M2Ex
ZWNlZDIuLjc3Yjc2MTQ1NWFjMGNiYWJhMGMzN2FiMzExYmZjOGY2YTE0MWU1YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisKIDIwMTktMTItMTMgIEphbWVz
IERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFOR0xFOiBm
aXggYmxlbmRpbmcgd2l0aCBhbHBoYTpmYWxzZSBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggZWI5ZGMzMDZiNDRmZjM1MDFmZjY0OWQyOWZm
ZTEyOTQxMjJkODViYy4uNDYwMzVhOWQxNmJkOWUzNTU5NWFjYWQ4YmU3MjMzYWZjZTMzMTAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcApAQCAtMTg0LDEw
ICsxODQsMTAgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05v
Q29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxl
bmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQqKT4o
Wz1dKHZvaWQqIHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0
cnVjdG9yKHAsIGRlc3RydWN0b3JDb250ZXh0KTsKLSAgICB9KTsKKyAgICB9KSk7CiAgICAgSlNP
YmplY3QqIHJlc3VsdCA9IGNyZWF0ZVR5cGVkQXJyYXkoZ2xvYmFsT2JqZWN0LCBhcnJheVR5cGUs
IFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoIC8gZWxlbWVudEJ5dGVTaXplKTsKICAgICBpZiAo
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRp
b25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxMiwxMCAr
MzEyLDEwIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9D
b3B5KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAg
YXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBieXRlTGVu
Z3RoLCBbPV0odm9pZCogcCkgeworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZUZyb21CeXRlcyhieXRlcywgYnl0ZUxlbmd0aCwgY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQq
KT4oWz1dKHZvaWQqIHApIHsKICAgICAgICAgaWYgKGJ5dGVzRGVhbGxvY2F0b3IpCiAgICAgICAg
ICAgICBieXRlc0RlYWxsb2NhdG9yKHAsIGRlYWxsb2NhdG9yQ29udGV4dCk7Ci0gICAgfSk7Cisg
ICAgfSkpOwogCiAgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZTo6RGVmYXVsdCksIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVz
OjpEaWRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTYxZDcwNWNjMmUz
YzYxOWVjNTQ0Yjc2NmViNzRkMjhhODRmODhjNi4uM2RmZGU2MzZkNTIwMjRhNjZiMTA3OGMzMjY4
NTU1ODYyZjAzNWJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1Miw3ICs3
NTIsNiBAQAogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwREFEMDMw
RkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZDOTIxNjFCOTRGQjNFMDA3MURENjYg
LyogREZHUHJvcGVydHlUeXBlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBl
S2V5LmggKi87IH07CiAJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQw
MTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERG
R0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgfTsKIAkJMEZG
RkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ1NFUGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZG
Qzk1MDE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuaCAqLzsgfTsKQEAgLTMyNTMsOCArMzI1
Miw2IEBACiAJCTBGRkI4MEJCMjBBNzk0NzAwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb2RlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJv
cGVydHlUeXBlS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Byb3Bl
cnR5VHlwZUtleS5oOyBwYXRoID0gZGZnL0RGR1Byb3BlcnR5VHlwZUtleS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRN
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0YW50TW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAv
KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQ
aGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0RDE0RUY5
MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQ1NFUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NTRVBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NDMsOCArNjk0MCw2IEBACiAJCQkJMEY2
QjFDQjcxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggKi8sCiAJCQkJQTdBOEFG
MjUxN0FEQjVGMjAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCAqLywKIAkJCQlBN0E4QUYyNjE3
QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLywKLQkJCQkwRkZDOTlEMjE4NEVFMzE4
MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLywKLQkJ
CQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi8sCiAJCQkJMEYzMEZCNjAxREMyREU5NjAwMzEyNEYyIC8qIEFycmF5QnVmZmVy
U2hhcmluZ01vZGUuaCAqLywKIAkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLywKIAkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmggKi8sCkBAIC04ODg4LDcgKzg4ODMsNiBAQAogCQkJCTg2QUREMTQ1MEZEREVB
OTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1
QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMEZCNjExREMyREU5
OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA1M2NjYzc0Zjgy
ZDliZGUyNTMzYzJmNjkzZTY2NzZhOWJlZjMxYjY4Li5mZTVmNTE5M2JkNTUxYjY2YjZjZjEyY2Y5
NzViOTdlM2JiNTRkMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03MDMsNyAr
NzAzLDYgQEAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiBydW50aW1lL0Fic3RyYWN0TW9kdWxl
UmVjb3JkLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVudGltZS9BcnJheUJ1ZmZlci5jcHAK
LXJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcAogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwCiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCiBydW50aW1l
L0FycmF5Q29udmVudGlvbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKaW5kZXggYzI0MzFmMDNmY2U5NjdjMmY2YTdlZTQw
YWJmM2Q1NjE1NTQ2MzNiZS4uMDdiYWJlNzNiNGRlOTVmNjg2ZmNkMGMyYjkwZmMyNTNiOTdkNWJi
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKQEAgLTM4LDE5ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiB2
b2lkIEFycmF5QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9yOjphZGQoCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3LCBDb21tb25EYXRhJiBjb21tb24p
CiB7Ci0gICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIC8vIHZpZXcgaXMgYWxyZWFk
eSBmcm96ZW4uIElmIGl0IGlzIGRlYWxsb2NhdGVkLCBqZXR0aXNvbmluZyBoYXBwZW5zLgogICAg
IENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IG51bGxwdHI7CiAg
ICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKICAgICAgICAgd2F0Y2hwb2ludCA9IGNvbW1vbi53YXRjaHBvaW50cy5hZGQoY29kZUJsb2Nr
KTsKICAgICB9Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBuZXV0ZXJp
bmdXYXRjaHBvaW50ID0KLSAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZChXVEZNb3Zl
KHdhdGNocG9pbnQpKTsKLSAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KENvbmN1cnJlbnRKU0xv
Y2tlcihjb2RlQmxvY2stPm1fbG9jayksIG5ldXRlcmluZ1dhdGNocG9pbnQpOworICAgIEFycmF5
QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYXJyYXlCdWZmZXIpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVk
IHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4Ci0gICAgdm0u
aGVhcC5hZGRSZWZlcmVuY2UobmV1dGVyaW5nV2F0Y2hwb2ludCwgdmlldy0+cG9zc2libHlTaGFy
ZWRCdWZmZXIoKSk7CisgICAgYXJyYXlCdWZmZXItPm5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKS5h
ZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7CiB9CiAKIHZvaWQgU3ltYm9sVGFibGVBZGFwdG9yOjph
ZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDc5NjQ5ODUzMzE2
MDNjMzhiYmFlY2U0M2I0N2E4YmEwODc5YmQ4NzAuLmIzMjBmNzA3Yzk1ZjEyMzkzODUxYmMzYjJi
MmI0MmI5NTZkZDBiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBA
IC0xMzk5LDYgKzEzOTksNyBAQCBKU0FycmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZvbGRh
YmxlVmlldyhKU1ZhbHVlIHZhbHVlKQogICAgIGlmICghdmlldy0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgIGZyZWV6ZSh2
aWV3KTsKICAgICB3YXRjaHBvaW50cygpLmFkZExhemlseSh2aWV3KTsKICAgICByZXR1cm4gdmll
dzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApp
bmRleCAwN2JkYTM4YTZlMjI4YWZkZDA0MWIyMTg2MGM3YWY0MjMxMjMzNDc1Li40NmQ0Y2ZiYjBl
MTg4NzkyMTBjZWQ3Mzc3MTMxNmU3MGUyNDllZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yNiwxMyArMjYsMjIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCitSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5
QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKQoreworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8UmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+Pj4gZGVzdHJ1Y3RvcjsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBkZXN0cnVjdG9yLmNvbnN0cnVjdChjcmVhdGVTaGFyZWRU
YXNrPHZvaWQodm9pZCopPihbXSAodm9pZCogcCkgeyBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6
UHJpbWl0aXZlLCBwKTsgfSkpOworICAgIH0pOworICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgp
LmNvcHlSZWYoKTsKK30KKwogU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAg
ICAsIG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQpAQCAtNDIsOCArNTEsMTAgQEAg
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplLAogCiBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjp+U2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50cygpCiB7Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZG4ndCB1
c2UgZ2V0VW5zYWZlIGhlcmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NzY5OAotICAgIG1fZGVzdHJ1Y3RvcihtX2RhdGEuZ2V0VW5zYWZlKCkpOworICAgIGlmICht
X2Rlc3RydWN0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZG4ndCB1c2UgZ2V0VW5z
YWZlIGhlcmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY5OAor
ICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEuZ2V0VW5zYWZlKCkpOworICAgIH0KIH0K
IAogQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cygpCkBAIC04NCwxNSAr
OTUsMTcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpjbGVhcigpCiAKIHZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6ZGVzdHJveSgpCiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCB1
c2UgZ2V0VW5zYWZlIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdldFVuc2FmZSgpKTsKKyAgICBpZiAo
bV9kZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGdldFVu
c2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Njk4
CisgICAgICAgIG1fZGVzdHJ1Y3Rvci0+cnVuKG1fZGF0YS5nZXRVbnNhZmUoKSk7CisgICAgfQog
fQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKIHsKLSAgICBtX2Rlc3RydWN0
b3IgPSBbXSAodm9pZCopIHsgfTsKLSAgICBtX3NoYXJlZCA9IG51bGxwdHI7CiAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICBtX2Rlc3RydWN0b3IgPSBudWxscHRyOworICAgIG1fc2hhcmVkID0g
bnVsbHB0cjsKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIApAQCAtMTIzLDEzICsxMzYsMTMg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKIAogICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5C
eXRlczsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZG
RVJfU0laRSk7Ci0gICAgbV9kZXN0cnVjdG9yID0gW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZy
ZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH07CisgICAgbV9kZXN0cnVjdG9yID0gcHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
bWFrZVNoYXJlZCgpCiB7CiAgICAgbV9zaGFyZWQgPSBhZG9wdFJlZihuZXcgU2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyhkYXRhKCksIHNpemVJbkJ5dGVzKCksIFdURk1vdmUobV9kZXN0cnVjdG9y
KSkpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2b2lkKikgeyB9OworICAgIG1fZGVzdHJ1Y3Rv
ciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJhbnNmZXJUbyhB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKQEAgLTE1OCw5ICsxNzEsOSBAQCB2b2lkIEFycmF5
QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKIHsK
ICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7CiAgICAgQVNTRVJUKG1fc2hhcmVkKTsKLSAgICBv
dGhlci5tX2Rlc3RydWN0b3IgPSBbXSAodm9pZCopIHsgfTsKLSAgICBvdGhlci5tX3NoYXJlZCA9
IG1fc2hhcmVkOwogICAgIG90aGVyLm1fZGF0YSA9IG1fZGF0YTsKKyAgICBvdGhlci5tX2Rlc3Ry
dWN0b3IgPSBudWxscHRyOworICAgIG90aGVyLm1fc2hhcmVkID0gbV9zaGFyZWQ7CiAgICAgb3Ro
ZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUluQnl0ZXM7CiAgICAgUkVMRUFTRV9BU1NFUlQob3Ro
ZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQpAQCAtMTk3LDcg
KzIxMCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyAgIGZyb20gdGhlIGNhZ2UuCiBSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVu
Z3RoLCBbXSAodm9pZCogcCkgeyBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBw
KTsgfSk7CisgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBwcmlt
aXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSk7CiB9CiAKIC8vIEZJWE1FOiBXZSBjYW5ub3QgdXNl
IHRoaXMgZXhjZXB0IGlmIHRoZSBtZW1vcnkgY29tZXMgZnJvbSB0aGUgY2FnZS4KQEAgLTM3MSw2
ICszODQsNyBAQCBib29sIEFycmF5QnVmZmVyOjp0cmFuc2ZlclRvKFZNJiB2bSwgQXJyYXlCdWZm
ZXJDb250ZW50cyYgcmVzdWx0KQogCiAgICAgbV9jb250ZW50cy50cmFuc2ZlclRvKHJlc3VsdCk7
CiAgICAgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIodm0pOworICAgIG1fbmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5maXJlQWxsKHZtLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJl
ZCIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODEsNiArMzk1LDcgQEAgdm9pZCBBcnJh
eUJ1ZmZlcjo6bmV1dGVyKFZNJiB2bSkKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIHVudXNlZDsK
ICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyVG8odW51c2VkKTsKICAgICBub3RpZnlJbmNvbW1pbmdS
ZWZlcmVuY2VzT2ZUcmFuc2Zlcih2bSk7CisgICAgbV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmZp
cmVBbGwodm0sICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9CiAKIHZvaWQgQXJyYXlC
dWZmZXI6Om5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKFZNJiB2bSkKQEAgLTM4
OSw4ICs0MDQsNiBAQCB2b2lkIEFycmF5QnVmZmVyOjpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2Vz
T2ZUcmFuc2ZlcihWTSYgdm0pCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGluY29taW5nUmVmZXJl
bmNlQXQoaSk7CiAgICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgY2VsbCkpCiAgICAgICAgICAgICB2aWV3LT5u
ZXV0ZXIoKTsKLSAgICAgICAgZWxzZSBpZiAoQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50ID0ganNEeW5hbWljQ2FzdDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQqPih2bSwgY2VsbCkpCi0gICAgICAgICAgICB3YXRjaHBvaW50LT5maXJlQWxsKCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aAppbmRleCBlNmY1NWNlMGJkOTg5ZGZiMTVkNjY0MmQ2ZjhhYjVjM2JmNDUyZmQ5Li45YTY1ODVm
ZjViYTI2NGUzYzVmMDUxNTNhM2I1N2I1NzU5ZmNmYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTI3LDEwICsyNywxMiBAQAogCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3Vu
dGVkLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNs
dWRlIDx3dGYvQ2FnZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
LSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw3ICs0Niw4IEBAIGNsYXNzIEFycmF5QnVmZmVyOwog
Y2xhc3MgQXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgSlNBcnJheUJ1ZmZlcjsKIAotdHlwZWRlZiBG
dW5jdGlvbjx2b2lkKHZvaWQqKT4gQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb247Cit1c2lu
ZyBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPj47Cit1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBh
Y2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj47CiAKIGNsYXNzIFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cz4gewogcHVibGljOgpAQCAtNTYsNyArNTksNyBAQCBjbGFzcyBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFy
cmF5QnVmZmVyQwogcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7
Ci0gICAgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOworICAgIFBh
Y2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICB1bnNp
Z25lZCBtX3NpemVJbkJ5dGVzOwogfTsKIApAQCAtOTgsMTAgKzEwMSwxMCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlckNvbnRlbnRzIHsKICAgICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7
CiAgICAgdm9pZCBzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYpOwogCi0gICAgQXJyYXlC
dWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIFJlZlB0cjxTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2Vk
UHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlw
ZSBtX2RhdGE7CisgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0
cnVjdG9yOworICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3No
YXJlZDsKICAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwogfTsKIApAQCAtMTQ4LDExICsxNTEs
MTQgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJy
YXlCdWZmZXI+IHsKIAogICAgIHZvaWQgbmV1dGVyKFZNJik7CiAgICAgYm9vbCBpc05ldXRlcmVk
KCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNl
dCYgbmV1dGVyaW5nV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbmV1dGVyaW5nV2F0Y2hwb2lu
dFNldDsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkRhdGEoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQXJyYXlCdWZmZXIsIG1fY29udGVudHMpICsgT0JKRUNUX09GRlNFVE9G
KEFycmF5QnVmZmVyQ29udGVudHMsIG1fZGF0YSk7IH0KIAogICAgIH5BcnJheUJ1ZmZlcigpIHsg
fQogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CisKIHByaXZhdGU6CiAgICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5KTsKICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1
ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CkBAIC0xNjUsMTQgKzE3MSwx
NSBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJh
eUJ1ZmZlcj4gewogICAgIHZvaWQgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIo
Vk0mKTsKIAogICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50czsKKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0IG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldCB7IElzV2F0Y2hlZCB9OworcHVi
bGljOgorICAgIFdlYWs8SlNBcnJheUJ1ZmZlcj4gbV93cmFwcGVyOworcHJpdmF0ZToKICAgICBD
aGVja2VkPHVuc2lnbmVkPiBtX3BpbkNvdW50OwogICAgIGJvb2wgbV9pc1dhc21NZW1vcnk7CiAg
ICAgLy8gbV9sb2NrZWQgPT0gdHJ1ZSBtZWFucyB0aGF0IHNvbWUgQVBJIHVzZXIgZmV0Y2hlZCBt
X2NvbnRlbnRzIGRpcmVjdGx5IGZyb20gYSBUeXBlZEFycmF5IG9iamVjdCwKICAgICAvLyB0aGUg
YnVmZmVyIGlzIGJhY2tlZCBieSBhIFdlYkFzc2VtYmx5Lk1lbW9yeSwgb3IgaXMgYSBTaGFyZWRB
cnJheUJ1ZmZlci4KICAgICBib29sIG1fbG9ja2VkOwotCi1wdWJsaWM6Ci0gICAgV2VhazxKU0Fy
cmF5QnVmZmVyPiBtX3dyYXBwZXI7CiB9OwogCiB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMGIxNmQ4MTJhNGJjNTdjOGNlZjNhYjdhY2E3ZDMzOGM1YzBjOTNiZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQ6OnNfaW5mbyA9IHsKLSAgICAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICBDUkVBVEVfTUVU
SE9EX1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCkKLX07Ci0KLUFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0KFZNJiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hw
b2ludFNldChJc1dhdGNoZWQpKSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19jYXN0PEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKTsK
LX0KLQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0KiByZXN1bHQgPSBuZXcKLSAgICAgICAgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+KHZtLmhlYXApKQotICAg
ICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQodm0pOwotICAgIHJlc3VsdC0+
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cnVjdHVyZSog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
KQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLXZvaWQgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKCkKLXsKLSAgICBtX3NldC0+Zmly
ZUFsbCh2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGM3MzdjY2U1OGMxYzk3ZDExNWE2MDljZGIzMGQwMTExOTQxMjNl
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpT
Q2FzdC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNs
YXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICAKLSAgICBzdGF0aWMg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBjcmVhdGUoVk0mKTsKLQotICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYpOwotICAgIAotICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJu
IG1fc2V0LmdldCgpOyB9Ci0gICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJik7Ci0gICAg
Ci0gICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWYwYWE0ZTczNWQ2ZDhiYjQ4
OWU4MDM4MWQwMGI2NTEyZmVlZjgzMC4uZjUzOWY1MDViNmE4MTU3NDI1YzE5Y2FmYWJiNGI2ODk1
Y2M3ZmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzAsNyArMzAs
NiBAQAogI2luY2x1ZGUgIlZNLmgiCiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAi
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgpAQCAtNDY2LDcgKzQ2NSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0
cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
c3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVN
YXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB0ZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgdW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVu
bGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVC
bG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggYWYyMDE5ODBlNTBhOTNiYjYwMThmYjM2ZGJkZjVmYjE0NDg3
ZTQzMS4uYjk0MzliNjk5YjM3NmNlN2YyYTUzNmFmOGIxMjBiZmNhODFkNzcyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02NjgsNyArNjY4LDYgQEAgY2xhc3MgVk0gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8
Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZTsKLSAgICBT
dHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVy
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlNZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5jcHAKaW5kZXggM2Y4YmUzNmVmNmZiMDFjNmQ3MGQ3M2U4MzNkZjI2NTE0YzUxMDlh
YS4uMTNjNjJmNjgzNDA2NjdhNzQxODVlODhhZmJjNzg5YmI3ZjcwMmMzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVm
ZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIC8vIFdlIGNh
bid0IHVzZSBhIHJlZiBoZXJlIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3RydWN0
b3IuLi4KICAgICBSZWY8V2FzbTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21lbW9yeS5n
ZXQoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShw
cm90ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsgfTsKKyAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVh
dGVTaGFyZWRUYXNrPHZvaWQodm9pZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90
ZWN0ZWRNZW1vcnkpXSAodm9pZCopIHsgfSk7CiAgICAgbV9idWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKG1lbW9yeSgpLm1lbW9yeSgpLCBtZW1vcnkoKS5zaXplKCksIFdURk1v
dmUoZGVzdHJ1Y3RvcikpOwogICAgIG1fYnVmZmVyLT5tYWtlV2FzbU1lbW9yeSgpOwogICAgIG1f
YnVmZmVyV3JhcHBlci5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpE
ZWZhdWx0KSwgbV9idWZmZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDhlOGVjMTU5YTcxNDRmNjFhZDU4MGU1NjA1ZWM0MjdlNjljMzk4OGUu
LjViZDdhYjQzZGUwNmY4OTNjMTY0ZDU5OWM2Y2M0ZjVmYjE3YjA1YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjczLDYgKzY3Myw4IEBACiAJCUUzNENE
MEQwMjI4MTBBMDIwMDIwRDI5OSAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAv
KiBVbmFsaWduZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5h
bGlnbmVkQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY1MjEy
N0I4NUMwMEM5MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVuZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1
Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRS
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1Q0MyM0E0NDVFRTAwOERE
NEM4IC8qIFBhY2tlZFJlZlB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWZQdHIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdv
cmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2Vy
UG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODZFMjBDOTA5NTEw
MEU2MzJCQyAvKiBXb3JrZXJQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlclBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QzQxMjQxRUI0
RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDUFVUaW1lQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTA3Nyw2ICsxMDc5LDggQEAKIAkJCQlBOEE0NzJEQjE1MUE4MjVCMDA0MTIzRkYgLyog
T1NSYW5kb21Tb3VyY2UuaCAqLywKIAkJCQlFMzRDRDBEMDIyODEwQTAyMDAyMEQyOTkgLyogUGFj
a2VkLmggKi8sCiAJCQkJQThBNDcyREYxNTFBODI1QjAwNDEyM0ZGIC8qIFBhY2tlZEludFZlY3Rv
ci5oICovLAorCQkJCUUzNjg5NUNCMjNBNDQ1Q0QwMDhERDRDOCAvKiBQYWNrZWRSZWYuaCAqLywK
KwkJCQlFMzY4OTVDQzIzQTQ0NUVFMDA4REQ0QzggLyogUGFja2VkUmVmUHRyLmggKi8sCiAJCQkJ
QThBNDcyRTAxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThB
NDcyRTMxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgKi8sCiAJCQkJQThBNDcyRTQx
NTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRl
eCBhZmNjNjBlMjIwMzI1Y2IxMDlmZWQ5YWVmNDgxYmQ5Yzk2ZjM4ZmY1Li5kYWU0YTcxYjI4ZDEz
MDQyNGMwYmQ3MzFiZTQxNjQzZjA1MmIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTU1
LDYgKzE1NSw4IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBPcHRpb25hbC5oCiAgICAg
T3JkZXJNYWtlci5oCiAgICAgUGFja2VkLmgKKyAgICBQYWNrZWRSZWYuaAorICAgIFBhY2tlZFJl
ZlB0ci5oCiAgICAgUGFja2VkSW50VmVjdG9yLmgKICAgICBQYWdlQWxsb2NhdGlvbi5oCiAgICAg
UGFnZUJsb2NrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhY2tlZC5oIGIvU291cmNl
L1dURi93dGYvUGFja2VkLmgKaW5kZXggODM5ZDNjODczMTVlNTAxMDhiYzk3MTgwNmNhOTQ1OThj
MzEwMzllYi4uYjIyZmM3NjFkNDI5NzRiOTgxMjViYjdlN2QxYzJkMWY5YTU3ODMwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGFja2VkLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFja2Vk
LmgKQEAgLTE2Myw2ICsxNjMsMTAgQEAgY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAgICAgVCog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhZ2V0KCk7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3Mg
aW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBl
cy4KKyAgICB0eXBlZGVmIFQqIChQYWNrZWRBbGlnbmVkUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlw
ZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpID8gJlBhY2tlZEFsaWduZWRQdHI6Om1fc3RvcmFnZSA6IG51bGxwdHI7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KIAogICAgIFBhY2tl
ZEFsaWduZWRQdHImIG9wZXJhdG9yPShUKiB2YWx1ZSkKQEAgLTE3Miw5ICsxNzYsOSBAQCBjbGFz
cyBQYWNrZWRBbGlnbmVkUHRyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAg
IFQgZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIFQqIGV4Y2hhbmdlKFUmJiBuZXdWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIFQgb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgVCogb2xkVmFsdWUg
PSBnZXQoKTsKICAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOwogICAgICAg
ICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQpAQCAtMTg5LDE1ICsxOTMsMTUgQEAgY2xhc3MgUGFj
a2VkQWxpZ25lZFB0ciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KICAgICB2b2lkIHN3YXAoT3Ro
ZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgVCB0MSA9IGdldCgpOwotICAgICAgICBUIHQyID0g
b3RoZXIuZ2V0KCk7CisgICAgICAgIFQqIHQxID0gZ2V0KCk7CisgICAgICAgIFQqIHQyID0gb3Ro
ZXIuZ2V0KCk7CiAgICAgICAgIHNldCh0Mik7CiAgICAgICAgIG90aGVyLnNldCh0MSk7CiAgICAg
fQogCi0gICAgdm9pZCBzd2FwKFQmIHQyKQorICAgIHZvaWQgc3dhcChUKiB0MikKICAgICB7Ci0g
ICAgICAgIFQgdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKICAgICAgICAgc3Rk
Ojpzd2FwKHQxLCB0Mik7CiAgICAgICAgIHNldCh0MSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGFja2VkUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNGVjZGZmOGQ3NmUzN2M3ZjM5ZmI4YWQ5ZDg3N2M2OTA1MzQyMWRjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkUmVmLmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWYgPSBS
ZWY8VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6UGFja2VkUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkUmVmUHRy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQ3ZDdkZmI2
NTdmZWEzZWU3NjAzZjA3MjI3NDI2NzUwZDc2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvUGFja2VkUmVmUHRyLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWZQdHIgPSBSZWZQdHI8VCwg
UGFja2VkUHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6
UGFja2VkUmVmUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCA1YmVjNmM3ZWUyMGU4NjcyMzUyNzkzMDcyOGU4Y2Yx
ODNkYjliNDhiLi42ZDRjNjQ0NGU3ZWFmMWFhMWVhYWY0MzI5YTVmNjk4ZjA5M2VkMGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQ
dHIuaApAQCAtODEsOCArODEsOCBAQCBjbGFzcyBSZWZQdHIgewogICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CiAKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3Bl
cmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVy
IGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBUKiAoUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29s
VHlwZSk7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyID8gJlJlZlB0cjo6bV9wdHIgOiBudWxscHRyOyB9CisgICAgdXNpbmcgVW5zcGVjaWZp
ZWRCb29sVHlwZSA9IHZvaWQgKFJlZlB0cjo6KikoKSBjb25zdDsKKyAgICBvcGVyYXRvciBVbnNw
ZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjp1bnNwZWNp
ZmllZEJvb2xUeXBlSW5zdGFuY2UgOiBudWxscHRyOyB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQogICAgIApAQCAtMTAyLDYgKzEwMiw4
IEBAIGNsYXNzIFJlZlB0ciB7CiAgICAgUmVmUHRyIGNvcHlSZWYoKSBjb25zdCAmIFdBUk5fVU5V
U0VEX1JFVFVSTiB7IHJldHVybiBSZWZQdHIobV9wdHIpOyB9CiAKIHByaXZhdGU6CisgICAgdm9p
ZCB1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFuY2UoKSBjb25zdCB7IH0KKwogICAgIGZyaWVuZCBS
ZWZQdHIgYWRvcHRSZWY8VCwgUHRyVHJhaXRzPihUKik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
WCwgdHlwZW5hbWUgWT4gZnJpZW5kIGNsYXNzIFJlZlB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBlNTY5NjI4ODJk
ZjM3MmQwNGJjNmQ4MzFhZmFkMWIxYmYyNTE0NzRmLi5hNGI5ZjY2ZDBlODdkMDIxMzIwZTM0Njkz
NjA2ZjA0M2Y4NTNlNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTcwLDE0ICsxNzAsMTEgQEAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8gYnVm
ZmVyID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBidWZmZXJTaXpl
KTsKLSAgICAgICAgYXV0byBkZXN0cnVjdG9yID0gW10gKHZvaWQqIHB0cikgewotICAgICAgICAg
ICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcHRyKTsKLSAgICAgICAgfTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDx1
aW50OF90Kj4oYnVmZmVyKSwgYnVmZmVyU2l6ZSwgMSkpIHsKLSAgICAgICAgICAgIGRlc3RydWN0
b3IoYnVmZmVyKTsKKyAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIGJ1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgV1RGTW92ZShkZXN0cnVjdG9yKSB9KTsKKyAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5LT5hcHBlbmQoeyBidWZmZXIsIGJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKSB9KTsKICAgICB9CiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYWIyNWY1NDUzMmY0NjMxMWMzYzRjZWRhZWJhY2RjMTNhOGFjOGM0Ni4u
ZDc5ODJhMGEyYzBlMDViZTIyOTQ2ODYzZmNlN2U3ZGQwZGNkMGJkMyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5
LTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gUmVtb3ZlIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBQYWNrZWRS
ZWYgYW5kIFBhY2tlZFJlZlB0ci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2Vk
UmVmLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnBhc3NXaXRoUmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBh
Y2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpkZXJl
Zik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZM
b2dnZXI6OkRlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcDogQ29waWVkIGZyb20gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZjEpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Q29uc3RSZWZDb3VudGVkOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6cmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJl
dHVyblJlZkNvdW50ZWRSZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmxvZ2dlck5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OnJlZik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6flRocmVhZFNhZmVS
ZWZDb3VudGVkT2JqZWN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZl
UmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5U
aHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6fk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVj
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmYxKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVybkNv
bnN0UmVmQ291bnRlZFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5SZWZDb3Vu
dGVkUmVmKToKKwogMjAxOS0xMi0xMyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90ZXN0cy5weSB0byBlbmFibGUg
YWxsIEdQVSBwcm9jZXNzIHJlbGF0ZWQgZmVhdHVyZXMgYW5kIGNob29zZSB0aGUgYWRkaXRpb25h
bCBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDg3Zjg0NDIx
MDFhMGRmN2ZkZjJlYzBkMTRiMTVmMDc2NDJhMzRlNzIuLmM5MTcwMzYzZWUzYjA0NTBjNjMxMTNh
YWE1OGI1ZDk2ZjYxMWJlNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNjUs
NiArNjUsOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL09wdGlvblNldC5j
cHAKICAgICBUZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAgICAgVGVzdHMvV1RGL1BhY2tlZC5jcHAK
KyAgICBUZXN0cy9XVEYvUGFja2VkUmVmLmNwcAorICAgIFRlc3RzL1dURi9QYWNrZWRSZWZQdHIu
Y3BwCiAgICAgVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCiAgICAgVGVzdHMvV1RGL1ByaW9yaXR5
UXVldWUuY3BwCiAgICAgVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNmNkY2E3MzViMGU0OWZmOWY0OWYxOGNhOGFjNzU0NWZkZTkwODExYi4uN2My
ZjhmMzQzZTA2MjdkZGJjODIxMTRjZjFjZTAzMTdlODg1NGY4NyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk2Nyw2ICs5NjcsOCBAQAogCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyog
SlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2Vz
V2ViVGhyZWFkTG9jay5tbSAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNp
Z25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhBMEQz
NTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJl
YWRpbmcuY3BwICovOyB9OworCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVm
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2
NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovOyB9OworCQlFMzhENjVDQjIz
QTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNr
ZWRSZWZQdHIuY3BwICovOyB9OwogCQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFy
c2VyVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTFFNzdFMjFCMjVCMzkwMDhDNjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2Rp
bmcuY3BwICovOyB9OwogCQlFM0ExRTc4MjIxQjI1QjdBMDA4QzYwMDcgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzgwMjFCMjVC
NzkwMDhDNjAwNyAvKiBVUkwuY3BwICovOyB9OwogCQlFM0ExRTc4NTIxQjI1QjkxMDA4QzYwMDcg
LyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTFFNzg0MjFCMjVCOTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwICovOyB9OwpA
QCAtMjQ5Miw2ICsyNDk0LDggQEAKIAkJRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9j
a1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlB
IC8qIFBhY2tlZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YWNrZWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzhENjVDOTIzQTQ1
RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBhY2tlZFJlZlB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNzU5LDYgKzM3NjMsOCBAQAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBP
cHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNl
dC5jcHAgKi8sCiAJCQkJRTMyQjU0OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi8s
CisJCQkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8sCisJCQkJ
RTM4RDY1QzkyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgKi8sCiAJCQkJMEZF
NDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAogCQkJCTUzRUMyNTNG
MUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0
MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLywKQEAgLTQ0NDgsNiArNDQ1NCw4
IEBACiAJCQkJMUE3N0JBQTMxRDlBRkZGQzAwNUZDNTY4IC8qIE9wdGlvblNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREYwMjFEMEE1OTBDMDBGRUJDRjMgLyogT1NPYmplY3RQdHIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBhY2tlZC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2Vk
UmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQ
YWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNTkxRDBBNTkwQzAwRkVC
Q0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNFQzI1NDExRTk2RkQ4
NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZEJsYWNrVHJlZS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJlZi5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3
YWJlYjc0YzA1NmRhOGVmMTQyMTQ0YzBjM2M3MTU3YmUwOGU5NjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwCkBAIC0wLDAgKzEs
Mjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVm
TG9nZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYWNr
ZWRSZWZQdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9QYWNr
ZWRSZWYsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgewor
ICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcmVmLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhZG9w
dFJlZihhKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVm
LCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxv
Z2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBiOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYo
YikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8
UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0gYzsKKyAgICAgICAgRVhQRUNUX0VR
KCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVm
KGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgICAgIHJlZiA9IGFkb3B0UmVmKGIpOworICAgICAgICBFWFBFQ1RfRVEoJmIs
IHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
ICAgICByZWYgPSBhZG9wdFJlZihjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitz
dGF0aWMgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dl
cj4mJiByZWZlcmVuY2UpCit7CisgICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKK30KKwor
VEVTVChXVEZfUGFja2VkUmVmLCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygi
YyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYocGFzc1dpdGhS
ZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4oYSkpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYu
cHRyKCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+
IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICByZWYgPSBwYXNzV2l0aFJlZihiKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9n
Z2VyPiBwdHIoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKFdURk1v
dmUocHRyKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZjxEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOworICAgICAg
ICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRS
ZWZlcmVuY2UuY29weVJlZigpKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVy
ZW5jZS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgU3dh
cCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQYWNrZWRS
ZWY8UmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwor
ICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5wdHIoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDIucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
PFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAyKGIpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwg
cDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworfQorCitzdHJ1Y3QgUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBS
ZWZMb2dnZXIgeworICAgIFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5h
bWUpOworICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0IFBhY2tl
ZFJlZjxQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj4qIHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9
OworfTsKKworc3RydWN0IERlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6IFBhY2tl
ZFJlZkNoZWNraW5nUmVmTG9nZ2VyIHsKKyAgICBEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZM
b2dnZXIoY29uc3QgY2hhciogbmFtZSk7Cit9OworCitQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dl
cjo6UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IFJl
ZkxvZ2dlciB7IG5hbWUgfQoreworfQorCit2b2lkIFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2Vy
OjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9
IiA8PCBzbG90VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAiICI7CisgICAgUmVmTG9nZ2VyOjpyZWYo
KTsKK30KKwordm9pZCBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYoKQoreworICAg
IGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVj
ay0+Z2V0KCkubmFtZSA8PCAiICI7CisgICAgUmVmTG9nZ2VyOjpkZXJlZigpOworfQorCitEZXJp
dmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1Jl
ZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dn
ZXIgeyBuYW1lIH0KK3sKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBBc3NpZ25CZWZvcmVEZXJl
ZikKK3sKKyAgICBEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAg
IFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUGFja2VkUmVm
Q2hlY2tpbmdSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFj
a2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBy
ZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNr
ID0gJnJlZjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGI7
CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNr
ID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSBy
ZWYoYikgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+
IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgYy5zbG90
VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGM7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sg
PSBudWxscHRyOworICAgICAgICBjLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQ
RUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYykgc2xvdD1jIGRlcmVmKGEpIHwg
ZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNs
b3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYik7CisgICAgICAgIGEu
c2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJl
ZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0gYWRv
cHRSZWYoYyk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBF
Q1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNmIzYTkxY2M4YTk1NGNjN2ZlZjdkZGJiZmY0MDIwMjAzODQxZTZjCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcApA
QCAtMCwwICsxLDU5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1BhY2tlZFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwg
QmFzaWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipw
dHIpOworICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gJmE7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAg
ICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQ
YWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9n
Z2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1v
dmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5n
ZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRy
LCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNz
aWduUGFzc1JlZlRvUmVmUHRyKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJl
ZlB0ciwgQWRvcHQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHku
Z2V0KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoYWRv
cHRSZWYoJmEpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5h
bWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0g
YWRvcHRSZWYoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQor
CitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgRVhQRUNUX0VR
KCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAg
ICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikg
fCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwg
IjsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
fCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAg
ICAgcHRyID0gYWRvcHRSZWYoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQ
RUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVm
TG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAg
ICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAg
ICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVk
UmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgcDEgPSBwMjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJl
ZihjKSBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmM7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJl
ZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmMpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmMsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxS
ZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+
IHAyKCZjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9
IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihj
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1
bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtu
b3duLXdhcm5pbmctb3B0aW9uIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2VsZi1hc3NpZ24tb3ZlcmxvYWRlZCIKKyNlbmRpZgorICAgICAgICBwdHIgPSBwdHI7CisjaWYg
Q09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihhKSBkZXJlZihhKSB8IGRlcmVm
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
UHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAg
ICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgU3dhcCkKK3sKKyAgICBS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
ICAgIHAxLnN3YXAocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZi
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBzdGQ6OnN3YXAo
cDEsIHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlTm9u
TnVsbCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8UmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxv
Z2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitU
RVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2UpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMi
KTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAg
RVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5n
ZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dl
cj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShw
MSkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAx
LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQ
YWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihi
KSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9n
KCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7Cisg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQor
CitzdGF0aWMgUmVmUHRyPFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAg
cmV0dXJuIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Q
YWNrZWRSZWZQdHIsIFJldHVyblZhbHVlKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgeworICAgICAgICBmMShhKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBh
dXRvIHB0ciA9IGYxKGEpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK3N0cnVjdCBDb25zdFJlZkNvdW50ZWQg
OiBSZWZDb3VudGVkPENvbnN0UmVmQ291bnRlZD4geworICAgIHN0YXRpYyBSZWY8Q29uc3RSZWZD
b3VudGVkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnN0UmVmQ291bnRlZCk7
IH0KK307CisKK3N0YXRpYyBjb25zdCBDb25zdFJlZkNvdW50ZWQmIHJldHVybkNvbnN0UmVmQ291
bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4g
aW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorc3RhdGljIENvbnN0UmVm
Q291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgp
OworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIENvbnN0KQoreworICAgIC8vIFRoaXMgdGVz
dCBwYXNzZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBhbiBlcnJvci4KKyAgICBhdXRvIGEgPSBD
b25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGIgPSBXVEZNb3ZlKGEpOworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGMgPSBiLnB0cigpOworICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+
IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBQYWNrZWRSZWZQdHI8Y29uc3Qg
Q29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIFBh
Y2tlZFJlZlB0cjxDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgp
OworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOworICAgIFBh
Y2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUGFja2VkUmVmPGNv
bnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOworfQorCitzdHJ1
Y3QgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgeworICAgIFBhY2tl
ZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVm
KCk7CisgICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0IFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcj4qIHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9OworfTsKKworUGFj
a2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2Vy
KGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKworc3Rh
dGljIGNvbnN0IGNoYXIqIGxvZ2dlck5hbWUoY29uc3QgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyPiYgcG9pbnRlcikKK3sKKyAgICByZXR1cm4gcG9pbnRlciA/ICZw
b2ludGVyLT5uYW1lIDogIm51bGwiOworfQorCit2b2lkIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwg
InNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAiOworICAgIFJlZkxvZ2dl
cjo6cmVmKCk7Cit9CisKK3ZvaWQgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OmRlcmVm
KCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAgICAgIGxvZygpIDw8ICJzbG90PSIgPDwg
bG9nZ2VyTmFtZSgqc2xvdFRvQ2hlY2spIDw8ICIgIjsKKyAgICBSZWZMb2dnZXI6OmRlcmVmKCk7
Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYpCit7CisgICAg
UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAgIFBhY2tlZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBh
Y2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAg
IGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIGEuc2xvdFRv
Q2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYikgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpIGRl
cmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAg
IGEuc2xvdFRvQ2hlY2sgPSAmcHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAg
ICAgICAgcHRyID0gJmI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAg
ICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9IG51
bGxwdHI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
c2xvdD1udWxsIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDIo
JmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRv
Q2hlY2sgPSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAxID0g
V1RGTW92ZShwMik7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBi
LnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHNsb3Q9YiBk
ZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChX
VEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbEJlZm9yZURlcmVmKQoreworICAgIFBhY2tl
ZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAg
ICAgYS5zbG90VG9DaGVjayA9ICZyZWZQdHI7CisgICAgICAgIHJlZlB0ci5yZWxlYXNlTm9uTnVs
bCgpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworfQorCisvLyBGSVhNRTogRW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgV2luIHBsYXRmb3Jt
IHN1cHBvcnRzIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bgorI2lmISBQTEFURk9STShXSU4pCisK
K3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgYm9vbCBpc0Rlc3Ryb3llZEluTWFpblRocmVhZDsK
K3N0cnVjdCBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCA6IFRocmVhZFNhZmVSZWZDb3VudGVk
PFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiB7CisgICAgc3RhdGljIFJlZjxUaHJlYWRTYWZl
UmVmQ291bnRlZE9iamVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRT
YWZlUmVmQ291bnRlZE9iamVjdCk7IH0KKworICAgIH5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVj
dCgpCisgICAgeworICAgICAgICBpc0Rlc3Ryb3llZEluTWFpblRocmVhZCA9IGlzTWFpblRocmVh
ZCgpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTWFpblRocmVh
ZFNhZmVSZWZDb3VudGVkT2JqZWN0IDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWFpblRocmVhZFNh
ZmVSZWZDb3VudGVkT2JqZWN0LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CisgICAg
c3RhdGljIFJlZjxNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KTsgfQorCisg
ICAgfk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCgpCisgICAgeworICAgICAgICBpc0Rl
c3Ryb3llZEluTWFpblRocmVhZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9Cit9OworCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VJbk5vbk1haW5U
aHJlYWQpCit7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIiLCBbb2Jq
ZWN0ID0gVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZSgpXSB7IH0pOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNEZXN0
cm95ZWRJbk1haW5UaHJlYWQpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VJ
bk5vbk1haW5UaHJlYWREZXN0cm95SW5NYWluVGhyZWFkKQoreworICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBUaHJlYWQ6OmNyZWF0
ZSgiIiwgW29iamVjdCA9IE1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKCld
IHsgfSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVD
VF9UUlVFKGlzRGVzdHJveWVkSW5NYWluVGhyZWFkKTsKK30KKworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZlB0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIu
Y3BwCmluZGV4IDA5ODgzMDZkZjg0NmY4M2QzNTJhZDg3ODQzZDkzNGQ2N2Q5NzEwMTIuLmY4ODM1
OWEwYmFhMWY4MWM5OGFmYjdkZWRjZWZhZDczZWE4N2UxYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmUHRyLmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIFRFU1QoV1RGX1JlZlB0
ciwgUmVsZWFzZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8
IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotUmVmUHRyPFJlZkxvZ2dl
cj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCitzdGF0aWMgUmVmUHRyPFJlZkxvZ2dlcj4gZjEoUmVm
TG9nZ2VyJiBsb2dnZXIpCiB7CiAgICAgcmV0dXJuIFJlZlB0cjxSZWZMb2dnZXI+KCZsb2dnZXIp
OwogfQpAQCAtNDE1LDEyICs0MTUsMTIgQEAgc3RydWN0IENvbnN0UmVmQ291bnRlZCA6IFJlZkNv
dW50ZWQ8Q29uc3RSZWZDb3VudGVkPiB7CiAgICAgc3RhdGljIFJlZjxDb25zdFJlZkNvdW50ZWQ+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29uc3RSZWZDb3VudGVkKTsgfQogfTsK
IAotY29uc3QgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKQorc3Rh
dGljIGNvbnN0IENvbnN0UmVmQ291bnRlZCYgcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29uc3RSZWZDb3VudGVkPiBpbnN0YW5jZTsKICAg
ICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7CiB9Ci1Db25zdFJlZkNvdW50ZWQmIHJldHVyblJlZkNv
dW50ZWRSZWYoKQorc3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7
CiAgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385666</attachid>
            <date>2019-12-13 18:05:08 -0800</date>
            <delta_ts>2019-12-13 21:02:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213180507.patch</filename>
            <type>text/plain</type>
            <size>74212</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODgzZDhkY2RmODAyYWJiMGJlZGRmNzY2ODY4YjI4OTlkZTVhNTUyLi45NGI5YWQ4Y2E4MGJlZDdl
MWUzOTQwYTBmOGYwYmU5MWUxOGNlYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgVGhlIG1haW4gcmVhc29uIHdo
eSB3ZSBhcmUgdXNpbmcgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGlzIG5vdCB0
byBpbmNyZWFzZSBzaXplb2YoQXJyYXlCdWZmZXIpLiBCdXQgdGhpcyBjb21wbGljYXRlcyB0aGUg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIFNvLCBub3QgdG8gaW5jcmVhc2Ugc2l6ZW9mKEFycmF5
QnVmZmVyKSwgd2UgdXNlIFBhY2tlZFJlZlB0ciBpbiBBcnJheUJ1ZmZlciwgd2hpY2ggaXMgUmVm
UHRyIHdoaWxlIHRoZSBwb2ludGVyIGlzIHBhY2tlZC4gVGhpcyBnaXZlcyB1cyA4IGJ5dGVzIHdo
aWNoIGlzCisgICAgICAgIHN1aXRhYmxlIGZvciBwbGFjaW5nIElubGluZVdhdGNocG9pbnRTZXQg
d2l0aG91dCBpbmNyZWFzaW5nIHNpemVvZihBcnJheUJ1ZmZlcikuIFdlIGFsc28gY29udmVydCBG
dW5jdGlvbjw+IGluIEFycmF5QnVmZmVyIHRvIFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPD4+LAor
ICAgICAgICBhbmQgc2hhcmUgR2lnYWNhZ2U6OmZyZWUgZGVzdHJ1Y3RvciBieSBtdWx0aXBsZSBB
cnJheUJ1ZmZlci4gVGhpcyBpcyBtZW1vcnkgZWZmaWNpZW50IHNpbmNlIHRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLCBhbmQgd2UgY2FuIHBhY2sgdGhpcyBmaWVsZCBlYXNpbHkuCisKKyAgICAgICAg
KiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlX
aXRoQnl0ZXNOb0NvcHkpOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRX
YXRjaHBvaW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hw
b2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHM6On5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50czo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
dHJhbnNmZXJUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXIpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6Om5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKwogMjAxOS0xMi0xMyAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBIZWFwOjpmaW5hbGl6
ZSBmdW5jdGlvbiB0aGF0IHRha2VzIFdURjo6RnVuY3Rpb248dm9pZCgpPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YmE4ZTBh
N2IxNzQ2MDEwNzdlNjUzYmZlZmZkYTFlZTQzOGI0Y2FkLi4wNWYzOTk0NDhiNWU4NWUwMTk5OGJm
NWZiNTk3ODViZTc4YTM2YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEyLTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBhY2tlZFJlZiBhbmQgUGFj
a2VkUmVmUHRyLiBUaGV5IGFyZSBSZWYgYW5kIFJlZlB0ciwgYnV0IGl0cyBpbnRlcm5hbCBwb2lu
dGVyIGlzIHBhY2tlZC4KKyAgICAgICAgU28gd2UgY2FuIHJlcHJlc2VudCB0aGVtIGluIDYgYnl0
ZXMgd2l0aCAxIGJ5dGUgYWxpZ25tZW50LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9QYWNrZWQuaDoKKyAgICAgICAgKFdURjo6YWxpZ25vZik6CisgICAgICAgICogd3RmL1BhY2tl
ZFJlZi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUGFja2VkUmVmUHRy
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUmVmUHRyLmg6CisgICAg
ICAgIChXVEY6OlJlZlB0cjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlJlZlB0cjo6dW5zcGVjaWZpZWRCb29sVHlwZUluc3RhbmNlIGNvbnN0KToK
KwogMjAxOS0xMi0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBIZWFwOjpmaW5hbGl6ZSBmdW5jdGlvbiB0aGF0IHRha2VzIFdURjo6RnVuY3Rpb248
dm9pZCgpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzNjJhMmZkNWRmY2NhNjA2YmY0MTJjMjdiN2ExYmE0M2Ex
ZWNlZDIuLjc3Yjc2MTQ1NWFjMGNiYWJhMGMzN2FiMzExYmZjOGY2YTE0MWU1YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisKIDIwMTktMTItMTMgIEphbWVz
IERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFOR0xFOiBm
aXggYmxlbmRpbmcgd2l0aCBhbHBoYTpmYWxzZSBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggZWI5ZGMzMDZiNDRmZjM1MDFmZjY0OWQyOWZm
ZTEyOTQxMjJkODViYy4uNDYwMzVhOWQxNmJkOWUzNTU5NWFjYWQ4YmU3MjMzYWZjZTMzMTAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcApAQCAtMTg0LDEw
ICsxODQsMTAgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05v
Q29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxl
bmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQqKT4o
Wz1dKHZvaWQqIHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0
cnVjdG9yKHAsIGRlc3RydWN0b3JDb250ZXh0KTsKLSAgICB9KTsKKyAgICB9KSk7CiAgICAgSlNP
YmplY3QqIHJlc3VsdCA9IGNyZWF0ZVR5cGVkQXJyYXkoZ2xvYmFsT2JqZWN0LCBhcnJheVR5cGUs
IFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoIC8gZWxlbWVudEJ5dGVTaXplKTsKICAgICBpZiAo
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRp
b25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxMiwxMCAr
MzEyLDEwIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9D
b3B5KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAg
YXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBieXRlTGVu
Z3RoLCBbPV0odm9pZCogcCkgeworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZUZyb21CeXRlcyhieXRlcywgYnl0ZUxlbmd0aCwgY3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQq
KT4oWz1dKHZvaWQqIHApIHsKICAgICAgICAgaWYgKGJ5dGVzRGVhbGxvY2F0b3IpCiAgICAgICAg
ICAgICBieXRlc0RlYWxsb2NhdG9yKHAsIGRlYWxsb2NhdG9yQ29udGV4dCk7Ci0gICAgfSk7Cisg
ICAgfSkpOwogCiAgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZTo6RGVmYXVsdCksIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVz
OjpEaWRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTYxZDcwNWNjMmUz
YzYxOWVjNTQ0Yjc2NmViNzRkMjhhODRmODhjNi4uM2RmZGU2MzZkNTIwMjRhNjZiMTA3OGMzMjY4
NTU1ODYyZjAzNWJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1Miw3ICs3
NTIsNiBAQAogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwREFEMDMw
RkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZDOTIxNjFCOTRGQjNFMDA3MURENjYg
LyogREZHUHJvcGVydHlUeXBlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBl
S2V5LmggKi87IH07CiAJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQw
MTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERG
R0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgfTsKIAkJMEZG
RkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ1NFUGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZG
Qzk1MDE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuaCAqLzsgfTsKQEAgLTMyNTMsOCArMzI1
Miw2IEBACiAJCTBGRkI4MEJCMjBBNzk0NzAwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb2RlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJv
cGVydHlUeXBlS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Byb3Bl
cnR5VHlwZUtleS5oOyBwYXRoID0gZGZnL0RGR1Byb3BlcnR5VHlwZUtleS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRN
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0YW50TW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAv
KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQ
aGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0RDE0RUY5
MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQ1NFUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NTRVBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NDMsOCArNjk0MCw2IEBACiAJCQkJMEY2
QjFDQjcxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggKi8sCiAJCQkJQTdBOEFG
MjUxN0FEQjVGMjAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCAqLywKIAkJCQlBN0E4QUYyNjE3
QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLywKLQkJCQkwRkZDOTlEMjE4NEVFMzE4
MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLywKLQkJ
CQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi8sCiAJCQkJMEYzMEZCNjAxREMyREU5NjAwMzEyNEYyIC8qIEFycmF5QnVmZmVy
U2hhcmluZ01vZGUuaCAqLywKIAkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLywKIAkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmggKi8sCkBAIC04ODg4LDcgKzg4ODMsNiBAQAogCQkJCTg2QUREMTQ1MEZEREVB
OTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1
QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMEZCNjExREMyREU5
OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA1M2NjYzc0Zjgy
ZDliZGUyNTMzYzJmNjkzZTY2NzZhOWJlZjMxYjY4Li5mZTVmNTE5M2JkNTUxYjY2YjZjZjEyY2Y5
NzViOTdlM2JiNTRkMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03MDMsNyAr
NzAzLDYgQEAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiBydW50aW1lL0Fic3RyYWN0TW9kdWxl
UmVjb3JkLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVudGltZS9BcnJheUJ1ZmZlci5jcHAK
LXJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcAogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwCiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCiBydW50aW1l
L0FycmF5Q29udmVudGlvbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKaW5kZXggYzI0MzFmMDNmY2U5NjdjMmY2YTdlZTQw
YWJmM2Q1NjE1NTQ2MzNiZS4uMDdiYWJlNzNiNGRlOTVmNjg2ZmNkMGMyYjkwZmMyNTNiOTdkNWJi
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKQEAgLTM4LDE5ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiB2
b2lkIEFycmF5QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9yOjphZGQoCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3LCBDb21tb25EYXRhJiBjb21tb24p
CiB7Ci0gICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIC8vIHZpZXcgaXMgYWxyZWFk
eSBmcm96ZW4uIElmIGl0IGlzIGRlYWxsb2NhdGVkLCBqZXR0aXNvbmluZyBoYXBwZW5zLgogICAg
IENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IG51bGxwdHI7CiAg
ICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKICAgICAgICAgd2F0Y2hwb2ludCA9IGNvbW1vbi53YXRjaHBvaW50cy5hZGQoY29kZUJsb2Nr
KTsKICAgICB9Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBuZXV0ZXJp
bmdXYXRjaHBvaW50ID0KLSAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZChXVEZNb3Zl
KHdhdGNocG9pbnQpKTsKLSAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KENvbmN1cnJlbnRKU0xv
Y2tlcihjb2RlQmxvY2stPm1fbG9jayksIG5ldXRlcmluZ1dhdGNocG9pbnQpOworICAgIEFycmF5
QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYXJyYXlCdWZmZXIpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVk
IHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4Ci0gICAgdm0u
aGVhcC5hZGRSZWZlcmVuY2UobmV1dGVyaW5nV2F0Y2hwb2ludCwgdmlldy0+cG9zc2libHlTaGFy
ZWRCdWZmZXIoKSk7CisgICAgYXJyYXlCdWZmZXItPm5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKS5h
ZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7CiB9CiAKIHZvaWQgU3ltYm9sVGFibGVBZGFwdG9yOjph
ZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDc5NjQ5ODUzMzE2
MDNjMzhiYmFlY2U0M2I0N2E4YmEwODc5YmQ4NzAuLmIzMjBmNzA3Yzk1ZjEyMzkzODUxYmMzYjJi
MmI0MmI5NTZkZDBiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBA
IC0xMzk5LDYgKzEzOTksNyBAQCBKU0FycmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZvbGRh
YmxlVmlldyhKU1ZhbHVlIHZhbHVlKQogICAgIGlmICghdmlldy0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgIGZyZWV6ZSh2
aWV3KTsKICAgICB3YXRjaHBvaW50cygpLmFkZExhemlseSh2aWV3KTsKICAgICByZXR1cm4gdmll
dzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApp
bmRleCAwN2JkYTM4YTZlMjI4YWZkZDA0MWIyMTg2MGM3YWY0MjMxMjMzNDc1Li4xODliNGFjNDU0
YWVhNjk4YjkyYjRmMDM5Y2NiYzkzMGMxMjRhYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yNiwxMyArMjYsMjIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCitSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5
QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKQoreworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8UmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+Pj4gZGVzdHJ1Y3RvcjsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBkZXN0cnVjdG9yLmNvbnN0cnVjdChjcmVhdGVTaGFyZWRU
YXNrPHZvaWQodm9pZCopPihbXSAodm9pZCogcCkgeyBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6
UHJpbWl0aXZlLCBwKTsgfSkpOworICAgIH0pOworICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgp
LmNvcHlSZWYoKTsKK30KKwogU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAg
ICAsIG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQpAQCAtNDIsOCArNTEsMTAgQEAg
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplLAogCiBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjp+U2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50cygpCiB7Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZG4ndCB1
c2UgZ2V0VW5zYWZlIGhlcmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NzY5OAotICAgIG1fZGVzdHJ1Y3RvcihtX2RhdGEuZ2V0VW5zYWZlKCkpOworICAgIGlmICht
X2Rlc3RydWN0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZG4ndCB1c2UgZ2V0VW5z
YWZlIGhlcmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY5OAor
ICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEuZ2V0VW5zYWZlKCkpOworICAgIH0KIH0K
IAogQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cygpCkBAIC04NCwxNSAr
OTUsMTcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpjbGVhcigpCiAKIHZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6ZGVzdHJveSgpCiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCB1
c2UgZ2V0VW5zYWZlIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdldFVuc2FmZSgpKTsKKyAgICBpZiAo
bV9kZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGdldFVu
c2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Njk4
CisgICAgICAgIG1fZGVzdHJ1Y3Rvci0+cnVuKG1fZGF0YS5nZXRVbnNhZmUoKSk7CisgICAgfQog
fQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKIHsKLSAgICBtX2Rlc3RydWN0
b3IgPSBbXSAodm9pZCopIHsgfTsKLSAgICBtX3NoYXJlZCA9IG51bGxwdHI7CiAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICBtX2Rlc3RydWN0b3IgPSBudWxscHRyOworICAgIG1fc2hhcmVkID0g
bnVsbHB0cjsKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIApAQCAtMTIzLDEzICsxMzYsMTMg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKIAogICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5C
eXRlczsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZG
RVJfU0laRSk7Ci0gICAgbV9kZXN0cnVjdG9yID0gW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZy
ZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH07CisgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlC
dWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQogCiB2b2lkIEFycmF5QnVm
ZmVyQ29udGVudHM6Om1ha2VTaGFyZWQoKQogewogICAgIG1fc2hhcmVkID0gYWRvcHRSZWYobmV3
IFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoZGF0YSgpLCBzaXplSW5CeXRlcygpLCBXVEZNb3Zl
KG1fZGVzdHJ1Y3RvcikpKTsKLSAgICBtX2Rlc3RydWN0b3IgPSBbXSAodm9pZCopIHsgfTsKKyAg
ICBtX2Rlc3RydWN0b3IgPSBudWxscHRyOwogfQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCkBAIC0xNTgsOSArMTcxLDkg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50
cyYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwogICAgIEFTU0VSVChtX3No
YXJlZCk7Ci0gICAgb3RoZXIubV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07Ci0gICAgb3Ro
ZXIubV9zaGFyZWQgPSBtX3NoYXJlZDsKICAgICBvdGhlci5tX2RhdGEgPSBtX2RhdGE7CisgICAg
b3RoZXIubV9kZXN0cnVjdG9yID0gbnVsbHB0cjsKKyAgICBvdGhlci5tX3NoYXJlZCA9IG1fc2hh
cmVkOwogICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwogICAgIFJFTEVB
U0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsK
IH0KQEAgLTE5Nyw3ICsyMTAsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8gICBmcm9tIHRoZSBjYWdlLgog
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBk
YXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMo
ZGF0YSwgYnl0ZUxlbmd0aCwgW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgcCk7IH0pOworICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKIH0K
IAogLy8gRklYTUU6IFdlIGNhbm5vdCB1c2UgdGhpcyBleGNlcHQgaWYgdGhlIG1lbW9yeSBjb21l
cyBmcm9tIHRoZSBjYWdlLgpAQCAtMzcxLDYgKzM4NCw3IEBAIGJvb2wgQXJyYXlCdWZmZXI6OnRy
YW5zZmVyVG8oVk0mIHZtLCBBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQpCiAKICAgICBtX2Nv
bnRlbnRzLnRyYW5zZmVyVG8ocmVzdWx0KTsKICAgICBub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2Vz
T2ZUcmFuc2Zlcih2bSk7CisgICAgbV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmZpcmVBbGwodm0s
ICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTM4MSw2ICszOTUsNyBAQCB2b2lkIEFycmF5QnVmZmVyOjpuZXV0ZXIoVk0mIHZtKQogICAgIEFy
cmF5QnVmZmVyQ29udGVudHMgdW51c2VkOwogICAgIG1fY29udGVudHMudHJhbnNmZXJUbyh1bnVz
ZWQpOwogICAgIG5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKHZtKTsKKyAgICBt
X25ldXRlcmluZ1dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgIkFycmF5IGJ1ZmZlciB3YXMgbmV1
dGVyZWQiKTsKIH0KIAogdm9pZCBBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNl
c09mVHJhbnNmZXIoVk0mIHZtKQpAQCAtMzg5LDggKzQwNCw2IEBAIHZvaWQgQXJyYXlCdWZmZXI6
Om5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKFZNJiB2bSkKICAgICAgICAgSlND
ZWxsKiBjZWxsID0gaW5jb21pbmdSZWZlcmVuY2VBdChpKTsKICAgICAgICAgaWYgKEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCBj
ZWxsKSkKICAgICAgICAgICAgIHZpZXctPm5ldXRlcigpOwotICAgICAgICBlbHNlIGlmIChBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIHdhdGNocG9pbnQgPSBqc0R5bmFtaWNDYXN0
PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KHZtLCBjZWxsKSkKLSAgICAgICAg
ICAgIHdhdGNocG9pbnQtPmZpcmVBbGwoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGU2ZjU1Y2UwYmQ5ODlkZmIxNWQ2NjQy
ZDZmOGFiNWMzYmY0NTJmZDkuLjlhNjU4NWZmNWJhMjY0ZTNjNWYwNTE1M2EzYjU3YjU3NTlmY2Zi
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAt
MjcsMTAgKzI3LDEyIEBACiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgiCiAj
aW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50Lmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9DYWdlZFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDcgKzQ2
LDggQEAgY2xhc3MgQXJyYXlCdWZmZXI7CiBjbGFzcyBBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBK
U0FycmF5QnVmZmVyOwogCi10eXBlZGVmIEZ1bmN0aW9uPHZvaWQodm9pZCopPiBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbjsKK3VzaW5nIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
ID0gUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PjsKK3VzaW5nIFBhY2tlZEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lk
Kik+PjsKIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiB7CiBwdWJsaWM6CkBAIC01
Niw3ICs1OSw3IEBAIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDCiBwcml2YXRlOgogICAgIHVzaW5n
IERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQ
dHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKLSAgICBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiBtX2Rlc3RydWN0b3I7CisgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24gbV9kZXN0cnVjdG9yOwogICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CiB9OwogCkBAIC05
OCwxMCArMTAxLDEwIEBAIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIHZvaWQgY29w
eVRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKICAgICB2b2lkIHNoYXJlV2l0aChBcnJheUJ1ZmZl
ckNvbnRlbnRzJik7CiAKLSAgICBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3Ry
dWN0b3I7Ci0gICAgUmVmUHRyPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwog
ICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwg
dGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKKyAgICBQYWNrZWRBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CisgICAgUGFja2VkUmVmUHRyPFNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwogICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0
ZXM7CiB9OwogCkBAIC0xNDgsMTEgKzE1MSwxNCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgdm9pZCBuZXV0ZXIo
Vk0mKTsKICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7
IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBuZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCkgeyBy
ZXR1cm4gbV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcnJheUJ1ZmZlciwgbV9j
b250ZW50cykgKyBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlCdWZmZXJDb250ZW50cywgbV9kYXRhKTsg
fQogCiAgICAgfkFycmF5QnVmZmVyKCkgeyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0
b3IoKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVu
c2lnbmVkKTsKQEAgLTE2NSwxNCArMTcxLDE1IEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGlj
IEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAgICAgdm9pZCBub3RpZnlJbmNv
bW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYpOwogCiAgICAgQXJyYXlCdWZmZXJDb250ZW50
cyBtX2NvbnRlbnRzOworICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9uZXV0ZXJpbmdXYXRjaHBv
aW50U2V0IHsgSXNXYXRjaGVkIH07CitwdWJsaWM6CisgICAgV2VhazxKU0FycmF5QnVmZmVyPiBt
X3dyYXBwZXI7Citwcml2YXRlOgogICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fcGluQ291bnQ7CiAg
ICAgYm9vbCBtX2lzV2FzbU1lbW9yeTsKICAgICAvLyBtX2xvY2tlZCA9PSB0cnVlIG1lYW5zIHRo
YXQgc29tZSBBUEkgdXNlciBmZXRjaGVkIG1fY29udGVudHMgZGlyZWN0bHkgZnJvbSBhIFR5cGVk
QXJyYXkgb2JqZWN0LAogICAgIC8vIHRoZSBidWZmZXIgaXMgYmFja2VkIGJ5IGEgV2ViQXNzZW1i
bHkuTWVtb3J5LCBvciBpcyBhIFNoYXJlZEFycmF5QnVmZmVyLgogICAgIGJvb2wgbV9sb2NrZWQ7
Ci0KLXB1YmxpYzoKLSAgICBXZWFrPEpTQXJyYXlCdWZmZXI+IG1fd3JhcHBlcjsKIH07CiAKIHZv
aWQqIEFycmF5QnVmZmVyOjpkYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjE2ZDgxMmE0YmM1N2M4Y2VmM2Fi
N2FjYTdkMzM4YzVjMGM5M2JmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5o
IgotCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3Qg
Q2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6c19pbmZvID0gewot
ICAgICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQiLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLAotICAgIENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0KQotfTsKLQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoVk0mIHZtKQotICAgIDogQmFzZSh2bSwg
dm0uYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLmdldCgpKQotICAgICwg
bV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQotewotfQotCi12
b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
Kj4oY2VsbCktPkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6fkFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludFNldCgpOwotfQotCi1BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlKFZNJiB2
bSkKLXsKLSAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIHJlc3VsdCA9IG5l
dwotICAgICAgICAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldD4odm0uaGVhcCkpCi0gICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFNldCh2bSk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotU3RydWN0dXJlKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0pCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCAwLCBqc051bGwoKSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmZp
cmVBbGwoKQotewotICAgIG1fc2V0LT5maXJlQWxsKHZtKCksICJBcnJheSBidWZmZXIgd2FzIG5l
dXRlcmVkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzczN2NjZTU4YzFj
OTdkMTE1YTYwOWNkYjMwZDAxMTE5NDEyM2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5o
IgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCi0gICAgREVDTEFS
RV9JTkZPOwotICAgIAotICAgIHN0YXRpYyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQqIGNyZWF0ZShWTSYpOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgCi0g
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJik7Ci0gICAgCi0gICAgV2F0
Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KLSAgICAKLSAgICB2b2lk
IGZpcmVBbGwoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQoVk0mKTsKLSAgICAKLSAgICBSZWY8V2F0Y2hwb2ludFNldD4gbV9zZXQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBhZjBhYTRlNzM1ZDZkOGJiNDg5ZTgwMzgxZDAwYjY1MTJmZWVmODMwLi5mNTM5ZjUw
NWI2YTgxNTc0MjVjMTljYWZhYmI0YjY4OTVjYzdmZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiVk0uaCIKIAogI2luY2x1
ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQuaCIKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCkBAIC00NjYsNyArNDY1LDYgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHN0cnVjdHVyZUNo
YWluU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNl
dCgqdGhpcywgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZS5zZXQoKnRo
aXMsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7Ci0gICAgYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJl
LnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhZjIwMTk4MGU1
MGE5M2JiNjAxOGZiMzZkYmRmNWZiMTQ0ODdlNDMxLi5iOTQzOWI2OTliMzc2Y2U3ZjJhNTM2YWY4
YjEyMGJmY2E4MWQ3NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY2OCw3
ICs2NjgsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZUNoYWluU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5
VmFsdWVNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5s
aW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAppbmRleCAzZjhiZTM2ZWY2ZmIw
MWM2ZDcwZDczZTgzM2RmMjY1MTRjNTEwOWFhLi4xM2M2MmY2ODM0MDY2N2E3NDE4NWU4OGFmYmM3
ODliYjdmNzAyYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcApAQCAtNzksNyArNzksNyBAQCBKU0FycmF5QnVmZmVy
KiBKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZmZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiAgICAgLy8gV2UgY2FuJ3QgdXNlIGEgcmVmIGhlcmUgc2luY2UgaXQgZG9l
c24ndCBoYXZlIGEgY29weSBjb25zdHJ1Y3Rvci4uLgogICAgIFJlZjxXYXNtOjpNZW1vcnk+IHBy
b3RlY3RlZE1lbW9yeSA9IG1fbWVtb3J5LmdldCgpOwotICAgIGF1dG8gZGVzdHJ1Y3RvciA9IFtw
cm90ZWN0ZWRNZW1vcnkgPSBXVEZNb3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9Owor
ICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtwcm90
ZWN0ZWRNZW1vcnkgPSBXVEZNb3ZlKHByb3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9KTsKICAg
ICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMobWVtb3J5KCkubWVtb3J5
KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92ZShkZXN0cnVjdG9yKSk7CiAgICAgbV9idWZmZXIt
Pm1ha2VXYXNtTWVtb3J5KCk7CiAgICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwgdGhpcywgSlNB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJl
KEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBtX2J1ZmZlci5nZXQoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGU4ZWMxNTlhNzE0NGY2
MWFkNTgwZTU2MDVlYzQyN2U2OWMzOTg4ZS4uNWJkN2FiNDNkZTA2Zjg5M2MxNjRkNTk5YzZjYzRm
NWZiMTdiMDViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02NzMsNiArNjczLDggQEAKIAkJRTM0Q0QwRDAyMjgxMEEwMjAwMjBEMjk5IC8qIFBhY2tlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vzcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVbmFsaWduZWRBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjUyMTI3Qjg1QzAwQzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzY4OTVDQjIzQTQ0NUNEMDA4REQ0QzggLyogUGFja2VkUmVm
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzY4OTVDQzIzQTQ0NUVFMDA4REQ0QzggLyogUGFja2VkUmVmUHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhY2tlZFJlZlB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4
ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM4ODg4NkUyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVVRpbWVDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDc3LDYgKzEwNzksOCBAQAogCQkJCUE4
QTQ3MkRCMTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5oICovLAogCQkJCUUzNENE
MEQwMjI4MTBBMDIwMDIwRDI5OSAvKiBQYWNrZWQuaCAqLywKIAkJCQlBOEE0NzJERjE1MUE4MjVC
MDA0MTIzRkYgLyogUGFja2VkSW50VmVjdG9yLmggKi8sCisJCQkJRTM2ODk1Q0IyM0E0NDVDRDAw
OERENEM4IC8qIFBhY2tlZFJlZi5oICovLAorCQkJCUUzNjg5NUNDMjNBNDQ1RUUwMDhERDRDOCAv
KiBQYWNrZWRSZWZQdHIuaCAqLywKIAkJCQlBOEE0NzJFMDE1MUE4MjVCMDA0MTIzRkYgLyogUGFn
ZUFsbG9jYXRpb24uaCAqLywKIAkJCQlBOEE0NzJFMzE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJs
b2NrLmNwcCAqLywKIAkJCQlBOEE0NzJFNDE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmgg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGFmY2M2MGUyMjAzMjVjYjEwOWZlZDlhZWY0ODFi
ZDljOTZmMzhmZjUuLmRhZTRhNzFiMjhkMTMwNDI0YzBiZDczMWJlNDE2NDNmMDUyYjNlYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNTUsNiArMTU1LDggQEAgc2V0KFdURl9QVUJMSUNfSEVB
REVSUwogICAgIE9wdGlvbmFsLmgKICAgICBPcmRlck1ha2VyLmgKICAgICBQYWNrZWQuaAorICAg
IFBhY2tlZFJlZi5oCisgICAgUGFja2VkUmVmUHRyLmgKICAgICBQYWNrZWRJbnRWZWN0b3IuaAog
ICAgIFBhZ2VBbGxvY2F0aW9uLmgKICAgICBQYWdlQmxvY2suaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGFja2VkLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAppbmRleCA4MzlkM2M4
NzMxNWU1MDEwOGJjOTcxODA2Y2E5NDU5OGMzMTAzOWViLi5iMjJmYzc2MWQ0Mjk3NGI5ODEyNWJi
N2U3ZDFjMmQxZjlhNTc4MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaApAQCAtMTYzLDYgKzE2MywxMCBAQCBjbGFzcyBQ
YWNrZWRBbGlnbmVkUHRyIHsKICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0KICAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KICAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhpcyBj
b252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0
IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFsaWdu
ZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJv
b2xUeXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9zdG9y
YWdlIDogbnVsbHB0cjsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBnZXQoKTsgfQogCiAgICAgUGFja2VkQWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZhbHVl
KQpAQCAtMTcyLDkgKzE3Niw5IEBAIGNsYXNzIFBhY2tlZEFsaWduZWRQdHIgewogICAgIH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAg
VCogZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQogICAgIHsKLSAgICAgICAgVCBvbGRWYWx1ZSA9IGdl
dCgpOworICAgICAgICBUKiBvbGRWYWx1ZSA9IGdldCgpOwogICAgICAgICBzZXQoc3RkOjpmb3J3
YXJkPFU+KG5ld1ZhbHVlKSk7CiAgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9CkBAIC0x
ODksMTUgKzE5MywxNSBAQCBjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tl
ZFR5cGU+PgogICAgIHZvaWQgc3dhcChPdGhlciYgb3RoZXIpCiAgICAgewotICAgICAgICBUIHQx
ID0gZ2V0KCk7Ci0gICAgICAgIFQgdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgVCogdDEgPSBn
ZXQoKTsKKyAgICAgICAgVCogdDIgPSBvdGhlci5nZXQoKTsKICAgICAgICAgc2V0KHQyKTsKICAg
ICAgICAgb3RoZXIuc2V0KHQxKTsKICAgICB9CiAKLSAgICB2b2lkIHN3YXAoVCYgdDIpCisgICAg
dm9pZCBzd2FwKFQqIHQyKQogICAgIHsKLSAgICAgICAgVCB0MSA9IGdldCgpOworICAgICAgICBU
KiB0MSA9IGdldCgpOwogICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKICAgICAgICAgc2V0KHQx
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BhY2tlZFJlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0ZWNkZmY4ZDc2ZTM3YzdmMzlmYjhh
ZDlkODc3YzY5MDUzNDIxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWNr
ZWRSZWYuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGFja2VkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3VzaW5nIFBhY2tlZFJlZiA9IFJlZjxULCBQYWNrZWRQdHJUcmFpdHM8VD4+OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpQYWNrZWRSZWY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1BhY2tlZFJlZlB0
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMyNDdkN2RmYjY1N2ZlYTNlZTc2MDNmMDcyMjc0MjY3NTBkNzZkMWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5n
IFBhY2tlZFJlZlB0ciA9IFJlZlB0cjxULCBQYWNrZWRQdHJUcmFpdHM8VD4+OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpQYWNrZWRSZWZQdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmluZGV4IDViZWM2
YzdlZTIwZTg2NzIzNTI3OTMwNzI4ZThjZjE4M2RiOWI0OGIuLjZkNGM2NDQ0ZTdlYWYxYWExZWFh
ZjQzMjlhNWY2OThmMDkzZWQwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC04MSw4ICs4MSw4IEBAIGNsYXNzIFJl
ZlB0ciB7CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KIAog
ICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lv
biB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQq
IChSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjptX3B0ciA6IG51bGxw
dHI7IH0KKyAgICB1c2luZyBVbnNwZWNpZmllZEJvb2xUeXBlID0gdm9pZCAoUmVmUHRyOjoqKSgp
IGNvbnN0OworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3B0ciA/ICZSZWZQdHI6OnVuc3BlY2lmaWVkQm9vbFR5cGVJbnN0YW5jZSA6IG51bGxwdHI7
IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRy
OyB9CiAgICAgCkBAIC0xMDIsNiArMTAyLDggQEAgY2xhc3MgUmVmUHRyIHsKICAgICBSZWZQdHIg
Y29weVJlZigpIGNvbnN0ICYgV0FSTl9VTlVTRURfUkVUVVJOIHsgcmV0dXJuIFJlZlB0cihtX3B0
cik7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIHVuc3BlY2lmaWVkQm9vbFR5cGVJbnN0YW5jZSgp
IGNvbnN0IHsgfQorCiAgICAgZnJpZW5kIFJlZlB0ciBhZG9wdFJlZjxULCBQdHJUcmFpdHM+KFQq
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBmcmllbmQgY2xhc3MgUmVm
UHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IGU1Njk2Mjg4MmRmMzcyZDA0YmM2ZDgzMWFmYWQxYjFiZjI1MTQ3NGYu
LmE0YjlmNjZkMGU4N2QwMjEzMjBlMzQ2OTM2MDZmMDQzZjg1M2U3NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNzAs
MTQgKzE3MCwxMSBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGJ1ZmZlclNpemUpOwotICAgICAgICBhdXRvIGRlc3RydWN0b3IgPSBb
XSAodm9pZCogcHRyKSB7Ci0gICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6UHJp
bWl0aXZlLCBwdHIpOwotICAgICAgICB9OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBidWZmZXJTaXplLCAx
KSkgewotICAgICAgICAgICAgZGVzdHJ1Y3RvcihidWZmZXIpOworICAgICAgICAgICAgR2lnYWNh
Z2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+
YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXplLCBXVEZNb3ZlKGRlc3RydWN0b3IpIH0pOworICAg
ICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpIH0pOwogICAgIH0K
IAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3Zl
KGRhdGEpLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhYjI1ZjU0NTMyZjQ2MzEx
YzNjNGNlZGFlYmFjZGMxM2E4YWM4YzQ2Li5kNzk4MmEwYTJjMGUwNWJlMjI5NDY4NjNmY2U3ZTdk
ZDBkY2QwYmQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTktMTItMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgZm9yIFBhY2tlZFJlZiBhbmQgUGFja2VkUmVmUHRyLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGFzc1dpdGhSZWYpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tl
ZFJlZkNoZWNraW5nUmVmTG9nZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJl
ZkNoZWNraW5nUmVmTG9nZ2VyOjpyZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2Vk
UmVmQ2hlY2tpbmdSZWZMb2dnZXI6OmRlcmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRl
cml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6RGVyaXZlZFBhY2tlZFJlZkNoZWNraW5n
UmVmTG9nZ2VyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWZQ
dHIuY3BwOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIu
Y3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpmMSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25zdFJlZkNvdW50ZWQ6OmNyZWF0
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6UGFja2VkUmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bG9nZ2VyTmFtZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6
cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyOjpkZXJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUaHJlYWRTYWZlUmVmQ291bnRl
ZE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRocmVhZFNhZmVSZWZD
b3VudGVkT2JqZWN0Ojp+VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0Ojp+TWFp
blRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SZWZQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZjEpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnJldHVyblJlZkNvdW50ZWRSZWYpOgorCiAyMDE5LTEyLTEzICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIG9wdGlvbiB0byBydW5f
d2Via2l0X3Rlc3RzLnB5IHRvIGVuYWJsZSBhbGwgR1BVIHByb2Nlc3MgcmVsYXRlZCBmZWF0dXJl
cyBhbmQgY2hvb3NlIHRoZSBhZGRpdGlvbmFsIGV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKaW5kZXggODdmODQ0MjEwMWEwZGY3ZmRmMmVjMGQxNGIxNWYwNzY0MmEzNGU3
Mi4uYzkxNzAzNjNlZTNiMDQ1MGM2MzExM2FhYTU4YjVkOTZmNjExYmU1NCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CkBAIC02NSw2ICs2NSw4IEBAIHNldChUZXN0V1RGX1NPVVJDRVMK
ICAgICBUZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAogICAgIFRlc3RzL1dURi9PcHRpb25hbC5jcHAK
ICAgICBUZXN0cy9XVEYvUGFja2VkLmNwcAorICAgIFRlc3RzL1dURi9QYWNrZWRSZWYuY3BwCisg
ICAgVGVzdHMvV1RGL1BhY2tlZFJlZlB0ci5jcHAKICAgICBUZXN0cy9XVEYvUGFya2luZ0xvdC5j
cHAKICAgICBUZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICBUZXN0cy9XVEYvUmVkQmxh
Y2tUcmVlLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2Y2RjYTczNWIwZTQ5ZmY5ZjQ5
ZjE4Y2E4YWM3NTQ1ZmRlOTA4MTFiLi43YzJmOGYzNDNlMDYyN2RkYmM4MjExNGNmMWNlMDMxN2U4
ODU0Zjg3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY3LDYgKzk2Nyw4IEBACiAJCUUz
NUZDN0IyMjJCODJBNzMwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVGQzdCMTIyQjgy
QTZEMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tICovOyB9OwogCQlFMzcz
RDc5MTFGMkNGMzUyMDBDNkZBQUYgLyogU2lnbmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2ln
bmFscy5jcHAgKi87IH07CiAJCUUzOEEwRDM1MUZENTBDQzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QTBE
MzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi87IH07CisJCUUzOEQ2NUNBMjNB
NDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJl
Zi5jcHAgKi87IH07CisJCUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDY1
QzkyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgKi87IH07CiAJCUUzQTFFNzdG
MjFCMjVCMzkwMDhDNjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMUU3N0UyMUIyNUIzOTAwOEM2
MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgKi87IH07CiAJCUUzQTFFNzgyMjFCMjVC
N0EwMDhDNjAwNyAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBMUU3ODAyMUIyNUI3OTAwOEM2MDA3IC8qIFVSTC5jcHAgKi87IH07CiAJ
CUUzQTFFNzg1MjFCMjVCOTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMUU3ODQyMUIyNUI5MTAwOEM2MDA3
IC8qIFVSTFBhcnNlci5jcHAgKi87IH07CkBAIC0yNDkyLDYgKzI0OTQsOCBAQAogCQlFMzVGQzdC
MTIyQjgyQTZEMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2Nr
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTBEMzQx
RkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzhENjVDODIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkUmVmUHRyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8q
IFNpZ25hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFs
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThCQzBGMjA0MUM3NjMwMDM4
NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVbmlxdWVBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTFF
NzdFMjFCMjVCMzkwMDhDNjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3NTksNiArMzc2Myw4IEBACiAJCQkJMUFG
REU2NTQxOTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKIAkJCQlDRTUwRDhDODFD
ODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJCQlFMzJCNTQ5MTIyODEwQUMw
MDA4QUQ3MDIgLyogUGFja2VkLmNwcCAqLywKKwkJCQlFMzhENjVDODIzQTQ1RkE5MDA2M0Q2OUEg
LyogUGFja2VkUmVmLmNwcCAqLywKKwkJCQlFMzhENjVDOTIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFj
a2VkUmVmUHRyLmNwcCAqLywKIAkJCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4RUIgLyogUGFya2lu
Z0xvdC5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVl
dWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUu
Y3BwICovLApAQCAtNDQ0OCw2ICs0NDU0LDggQEAKIAkJCQkxQTc3QkFBMzFEOUFGRkZDMDA1RkM1
NjggLyogT3B0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjAyMUQwQTU5MEMw
MEZFQkNGMyAvKiBPU09iamVjdFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzJCNTQ5MjIy
ODEwQUM0MDA4QUQ3MDIgLyogUGFja2VkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEQ2NUNB
MjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM4
RDY1Q0IyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREY1OTFEMEE1OTBDMDBGRUJDRjMgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxMzFEMEE1OTBDMDBGRUJDRjMgLyogUmVkQmxhY2tU
cmVlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUGFja2VkUmVmLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bh
Y2tlZFJlZi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdhYmViNzRjMDU2ZGE4ZWYxNDIxNDRjMGMzYzcxNTdi
ZTA4ZTk2OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhY2tlZFJlZi5jcHAKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFja2Vk
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgQmFzaWMpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJl
ZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitURVNUKFdURl9QYWNrZWRSZWYsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEp
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgICAgIHJlZiA9IGI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcmVmLnB0cigpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
fCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBy
ZWYgPSBjOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVm
KGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVm
LnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYo
Yik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
PFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7Cisg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9IGFkb3B0UmVmKGMpOworICAgICAg
ICBFWFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK3N0YXRpYyBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwYXNz
V2l0aFJlZihQYWNrZWRSZWY8UmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkKK3sKKyAgICByZXR1cm4g
V1RGTW92ZShyZWZlcmVuY2UpOworfQorCitURVNUKFdURl9QYWNrZWRSZWYsIFJldHVyblZhbHVl
KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7
CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJl
ZjxSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQYWNrZWRSZWY8UmVmTG9nZ2VyPihhKSkpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9IHBhc3NX
aXRoUmVmKGIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRl
cmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBhY2tlZFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cjIoV1RGTW92ZShwdHIpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51
bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyMi5nZXQoKSk7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPERlcml2ZWRSZWZMb2dnZXI+IGRl
cml2ZWRSZWZlcmVuY2UoYSk7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IGJhc2VSZWZl
cmVuY2UocGFzc1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5jZS5jb3B5UmVmKCkpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30K
KworVEVTVChXVEZfUGFja2VkUmVmLCBTd2FwKQoreworICAgIFJlZkxvZ2dlciBhKCJhIik7Cisg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dl
cj4gcDEoYSk7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5wdHIoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUGFj
a2VkUmVmPFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigp
KTsKKyAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEu
cHRyKCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLnB0cigpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJl
ZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK3N0cnVjdCBQYWNr
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6IFJlZkxvZ2dlciB7CisgICAgUGFja2VkUmVmQ2hlY2tp
bmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CisgICAgdm9pZCByZWYoKTsKKyAgICB2b2lk
IGRlcmVmKCk7CisgICAgY29uc3QgUGFja2VkUmVmPFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2Vy
Piogc2xvdFRvQ2hlY2sgeyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgRGVyaXZlZFBhY2tlZFJl
ZkNoZWNraW5nUmVmTG9nZ2VyIDogUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgeworICAgIERl
cml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKK307CisK
K1BhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihj
b25zdCBjaGFyKiBuYW1lKQorICAgIDogUmVmTG9nZ2VyIHsgbmFtZSB9Cit7Cit9CisKK3ZvaWQg
UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OnJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNr
KQorICAgICAgICBsb2coKSA8PCAic2xvdD0iIDw8IHNsb3RUb0NoZWNrLT5nZXQoKS5uYW1lIDw8
ICIgIjsKKyAgICBSZWZMb2dnZXI6OnJlZigpOworfQorCit2b2lkIFBhY2tlZFJlZkNoZWNraW5n
UmVmTG9nZ2VyOjpkZXJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNrKQorICAgICAgICBsb2co
KSA8PCAic2xvdD0iIDw8IHNsb3RUb0NoZWNrLT5nZXQoKS5uYW1lIDw8ICIgIjsKKyAgICBSZWZM
b2dnZXI6OmRlcmVmKCk7Cit9CisKK0Rlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6
RGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAg
OiBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciB7IG5hbWUgfQoreworfQorCitURVNUKFdURl9Q
YWNrZWRSZWYsIEFzc2lnbkJlZm9yZURlcmVmKQoreworICAgIERlcml2ZWRQYWNrZWRSZWZDaGVj
a2luZ1JlZkxvZ2dlciBhKCJhIik7CisgICAgUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYigi
YiIpOworICAgIERlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBjKCJjIik7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZjxQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj4gcmVmKGEp
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcmVmOworICAgICAgICBiLnNsb3RUb0NoZWNr
ID0gJnJlZjsKKyAgICAgICAgcmVmID0gYjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxw
dHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEo
JmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHwgc2xvdD1hIHJlZihiKSBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihi
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxQ
YWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSAmcmVmOworICAgICAgICBjLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0g
YzsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIGMuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1h
IHJlZihjKSBzbG90PWMgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dl
cj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcmVmOworICAgICAgICByZWYg
PSBhZG9wdFJlZihiKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxQYWNr
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJl
Zi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sg
PSAmcmVmOworICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKKyAgICAgICAgYS5zbG90VG9DaGVj
ayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcmVmLnB0cigpKTsKKyAgICAgICAg
bG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWMg
ZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BhY2tlZFJlZlB0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9QYWNrZWRSZWZQdHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YjNhOTFjYzhhOTU0Y2M3ZmVmN2RkYmJm
ZjQwMjAyMDM4NDFlNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwCkBAIC0wLDAgKzEsNTk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSAi
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFja2VkUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1BhY2tlZFJlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBCYXNpYykKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKKworICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IGVtcHR5OworICAgIEVYUEVD
VF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1l
LCAmcHRyLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0g
JmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9
IHAxOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBk
ZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRy
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZM
b2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDE7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJl
ZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxs
cHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsK
KyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKwor
VEVTVChXVEZfUGFja2VkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9SZWZQdHIpCit7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2Vy
PiBwYXNzUmVmKGEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBXVEZN
b3ZlKHBhc3NSZWYpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBBZG9wdCkKK3sKKyAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKKworICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IGVtcHR5OworICAg
IEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHB0cihhZG9wdFJlZigmYSkpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsIHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAgICAgICBF
WFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNzaWdu
bWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigi
YiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBw
MSA9IHAyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpIGRl
cmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwdHIgPSBhZG9wdFJlZigmYik7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBw
dHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAgICAgICBFWFBFQ1Rf
RVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihj
KSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAi
fCAiOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwdHIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
ICAgICBwdHIgPSBhZG9wdFJlZigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNr
ZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworI2lmIENP
TVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24td2FybmluZy1vcHRpb24iCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLWFzc2lnbi1vdmVybG9hZGVkIgorI2VuZGlm
CisgICAgICAgIHB0ciA9IHB0cjsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFj
a2VkUmVmUHRyLCBTd2FwKQoreworICAgIFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2Vy
IGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEVYUEVD
VF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVm
KGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5n
ZXQoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwg
ZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdU
Rl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQoreworICAgIFJlZkxvZ2dlciBhKCJhIik7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOwor
ICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiByZWYgPSByZWZQdHIucmVsZWFzZU5vbk51
bGwoKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmVsZWFzZSkK
K3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOwor
ICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
MiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRy
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZh
OworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAg
ICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVm
TG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUo
cDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZj
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YywgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1v
dmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK3N0YXRpYyBSZWZQdHI8UmVmTG9nZ2VyPiBmMShS
ZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4o
JmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmV0dXJuVmFsdWUpCit7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGYxKGEpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gZjEoYSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30K
Kworc3RydWN0IENvbnN0UmVmQ291bnRlZCA6IFJlZkNvdW50ZWQ8Q29uc3RSZWZDb3VudGVkPiB7
CisgICAgc3RhdGljIFJlZjxDb25zdFJlZkNvdW50ZWQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ29uc3RSZWZDb3VudGVkKTsgfQorfTsKKworc3RhdGljIGNvbnN0IENvbnN0UmVm
Q291bnRlZCYgcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Q29uc3RSZWZDb3VudGVkPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CitzdGF0aWMgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3VudGVkUmVmKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29uc3RSZWZDb3VudGVkPiBpbnN0YW5jZTsK
KyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwg
Q29uc3QpCit7CisgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3aXRob3V0
IGFuIGVycm9yLgorICAgIGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAg
UGFja2VkUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7CisgICAgUGFj
a2VkUmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUGFja2Vk
UmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZCA9IHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigp
OworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29u
c3RSZWZDb3VudGVkUmVmKCk7CisgICAgUGFja2VkUmVmUHRyPENvbnN0UmVmQ291bnRlZD4gZiA9
IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAgUGFja2VkUmVmUHRyPGNvbnN0IENvbnN0
UmVmQ291bnRlZD4gZyA9IGY7CisgICAgUGFja2VkUmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRl
ZD4gaChmKTsKKyAgICBQYWNrZWRSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBpKHJldHVyblJl
ZkNvdW50ZWRSZWYoKSk7Cit9CisKK3N0cnVjdCBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dl
ciA6IFJlZkxvZ2dlciB7CisgICAgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3Qg
Y2hhciogbmFtZSk7CisgICAgdm9pZCByZWYoKTsKKyAgICB2b2lkIGRlcmVmKCk7CisgICAgY29u
c3QgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiogc2xvdFRvQ2hl
Y2sgeyBudWxscHRyIH07Cit9OworCitQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6UGFj
a2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IFJlZkxv
Z2dlciB7IG5hbWUgfQoreworfQorCitzdGF0aWMgY29uc3QgY2hhciogbG9nZ2VyTmFtZShjb25z
dCBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+JiBwb2ludGVyKQor
eworICAgIHJldHVybiBwb2ludGVyID8gJnBvaW50ZXItPm5hbWUgOiAibnVsbCI7Cit9CisKK3Zv
aWQgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OnJlZigpCit7CisgICAgaWYgKHNsb3RU
b0NoZWNrKQorICAgICAgICBsb2coKSA8PCAic2xvdD0iIDw8IGxvZ2dlck5hbWUoKnNsb3RUb0No
ZWNrKSA8PCAiICI7CisgICAgUmVmTG9nZ2VyOjpyZWYoKTsKK30KKwordm9pZCBQYWNrZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAg
ICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAi
OworICAgIFJlZkxvZ2dlcjo6ZGVyZWYoKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBB
c3NpZ25CZWZvcmVEZXJlZikKK3sKKyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBh
KCJhIik7CisgICAgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYigiYiIpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAx
KCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2Vy
PiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5z
bG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAg
cDEgPSBwMjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xv
dFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHNsb3Q9YSByZWYoYikgc2xv
dD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZM
b2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwdHI7CisgICAgICAg
IGIuc2xvdFRvQ2hlY2sgPSAmcHRyOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgYS5zbG90
VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1hIHJlZihiKSBzbG90PWIgZGVy
ZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcHRyKCZhKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBhLnNsb3RUb0NoZWNr
ID0gJnB0cjsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJl
ZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9D
aGVjayA9ICZwMTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgYS5zbG90VG9D
aGVjayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAg
ICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAy
LmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgcmVmKGIpIHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxs
QmVmb3JlRGVyZWYpCit7CisgICAgUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZM
b2dnZXI+IHJlZlB0ciA9ICZhOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZlB0cjsKKyAg
ICAgICAgcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVsbCBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKKy8vIEZJWE1FOiBFbmFibGUgdGhl
c2UgdGVzdHMgb25jZSBXaW4gcGxhdGZvcm0gc3VwcG9ydHMgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuCisjaWYhIFBMQVRGT1JNKFdJTikKKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRpYyBib29s
IGlzRGVzdHJveWVkSW5NYWluVGhyZWFkOworc3RydWN0IFRocmVhZFNhZmVSZWZDb3VudGVkT2Jq
ZWN0IDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q+IHsK
KyAgICBzdGF0aWMgUmVmPFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KTsgfQorCisgICAg
flRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVzdHJveWVk
SW5NYWluVGhyZWFkID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH0KK307CisKK3N0cnVjdCBNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QgOiBUaHJlYWRT
YWZlUmVmQ291bnRlZDxNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKKyAgICBzdGF0aWMgUmVmPE1haW5UaHJlYWRTYWZlUmVmQ291
bnRlZE9iamVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYWluVGhyZWFkU2Fm
ZVJlZkNvdW50ZWRPYmplY3QpOyB9CisKKyAgICB+TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2Jq
ZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkID0gaXNNYWluVGhy
ZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0KK307CisKK1RFU1QoV1RGX1BhY2tl
ZFJlZlB0ciwgUmVsZWFzZUluTm9uTWFpblRocmVhZCkKK3sKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgVGhyZWFkOjpjcmVhdGUoIiIsIFtvYmplY3QgPSBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVj
dDo6Y3JlYXRlKCldIHsgfSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIEVYUEVDVF9GQUxTRShpc0Rlc3Ryb3llZEluTWFpblRocmVhZCk7Cit9CisKK1RFU1Qo
V1RGX1BhY2tlZFJlZlB0ciwgUmVsZWFzZUluTm9uTWFpblRocmVhZERlc3Ryb3lJbk1haW5UaHJl
YWQpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisgICAgZG9uZSA9
IGZhbHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gTWFpblRocmVhZFNhZmVS
ZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUoKV0geyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX1RSVUUoaXNEZXN0cm95ZWRJbk1haW5UaHJlYWQp
OworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMDk4ODMwNmRmODQ2ZjgzZDM1MmFk
ODc4NDNkOTM0ZDY3ZDk3MTAxMi4uZjg4MzU5YTBiYWExZjgxYzk4YWZiN2RlZGNlZmFkNzNlYTg3
ZTFjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCkBAIC0zOTEs
NyArMzkxLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogfQogCi1SZWZQdHI8UmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKK3N0YXRp
YyBSZWZQdHI8UmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKIHsKICAgICByZXR1cm4g
UmVmUHRyPFJlZkxvZ2dlcj4oJmxvZ2dlcik7CiB9CkBAIC00MTUsMTIgKzQxNSwxMiBAQCBzdHJ1
Y3QgQ29uc3RSZWZDb3VudGVkIDogUmVmQ291bnRlZDxDb25zdFJlZkNvdW50ZWQ+IHsKICAgICBz
dGF0aWMgUmVmPENvbnN0UmVmQ291bnRlZD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb25zdFJlZkNvdW50ZWQpOyB9CiB9OwogCi1jb25zdCBDb25zdFJlZkNvdW50ZWQmIHJldHVy
bkNvbnN0UmVmQ291bnRlZFJlZigpCitzdGF0aWMgY29uc3QgQ29uc3RSZWZDb3VudGVkJiByZXR1
cm5Db25zdFJlZkNvdW50ZWRSZWYoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb25z
dFJlZkNvdW50ZWQ+IGluc3RhbmNlOwogICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKIH0KLUNv
bnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCitzdGF0aWMgQ29uc3RSZWZDb3Vu
dGVkJiByZXR1cm5SZWZDb3VudGVkUmVmKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q29uc3RSZWZDb3VudGVkPiBpbnN0YW5jZTsKICAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385675</attachid>
            <date>2019-12-13 21:02:02 -0800</date>
            <delta_ts>2019-12-13 21:27:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213210201.patch</filename>
            <type>text/plain</type>
            <size>72457</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDViYzhiNjRiY2JjNzEyYmQ2NDFmNjg1MTBkNmFmMjU2NzhmODA5Li5kYjU0ZmJlMTk3YzZiM2M0
MWY3Mjg4NTFmYzM2YzVlMjljNDMwNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgVGhlIG1haW4gcmVhc29uIHdo
eSB3ZSBhcmUgdXNpbmcgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGlzIG5vdCB0
byBpbmNyZWFzZSBzaXplb2YoQXJyYXlCdWZmZXIpLiBCdXQgdGhpcyBjb21wbGljYXRlcyB0aGUg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIFNvLCBub3QgdG8gaW5jcmVhc2Ugc2l6ZW9mKEFycmF5
QnVmZmVyKSwgd2UgdXNlIFBhY2tlZFJlZlB0ciBpbiBBcnJheUJ1ZmZlciwgd2hpY2ggaXMgUmVm
UHRyIHdoaWxlIHRoZSBwb2ludGVyIGlzIHBhY2tlZC4gVGhpcyBnaXZlcyB1cyA4IGJ5dGVzIHdo
aWNoIGlzCisgICAgICAgIHN1aXRhYmxlIGZvciBwbGFjaW5nIElubGluZVdhdGNocG9pbnRTZXQg
d2l0aG91dCBpbmNyZWFzaW5nIHNpemVvZihBcnJheUJ1ZmZlcikuIFdlIGFsc28gY29udmVydCBG
dW5jdGlvbjw+IGluIEFycmF5QnVmZmVyIHRvIFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPD4+LAor
ICAgICAgICBhbmQgc2hhcmUgR2lnYWNhZ2U6OmZyZWUgZGVzdHJ1Y3RvciBieSBtdWx0aXBsZSBB
cnJheUJ1ZmZlci4gVGhpcyBpcyBtZW1vcnkgZWZmaWNpZW50IHNpbmNlIHRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLCBhbmQgd2UgY2FuIHBhY2sgdGhpcyBmaWVsZCBlYXNpbHkuCisKKyAgICAgICAg
KiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlX
aXRoQnl0ZXNOb0NvcHkpOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRX
YXRjaHBvaW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hw
b2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHM6On5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50czo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
dHJhbnNmZXJUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXIpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6Om5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKToKKwogMjAxOS0xMi0xMyAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBKU0Zp
eGVkQXJyYXksIGFuZCB1c2UgSlNJbW11dGFibGVCdXR0ZXJmbHkgaW5zdGVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YmE4
ZTBhN2IxNzQ2MDEwNzdlNjUzYmZlZmZkYTFlZTQzOGI0Y2FkLi4wNWYzOTk0NDhiNWU4NWUwMTk5
OGJmNWZiNTk3ODViZTc4YTM2YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEyLTEzICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3Zl
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBhY2tlZFJlZiBhbmQg
UGFja2VkUmVmUHRyLiBUaGV5IGFyZSBSZWYgYW5kIFJlZlB0ciwgYnV0IGl0cyBpbnRlcm5hbCBw
b2ludGVyIGlzIHBhY2tlZC4KKyAgICAgICAgU28gd2UgY2FuIHJlcHJlc2VudCB0aGVtIGluIDYg
Ynl0ZXMgd2l0aCAxIGJ5dGUgYWxpZ25tZW50LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IHd0Zi9QYWNrZWQuaDoKKyAgICAgICAgKFdURjo6YWxpZ25vZik6CisgICAgICAgICogd3RmL1Bh
Y2tlZFJlZi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUGFja2VkUmVm
UHRyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaC4KKyAgICAgICAgKiB3dGYvUmVmUHRyLmg6Cisg
ICAgICAgIChXVEY6OlJlZlB0cjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSBjb25zdCk6
CisgICAgICAgIChXVEY6OlJlZlB0cjo6dW5zcGVjaWZpZWRCb29sVHlwZUluc3RhbmNlIGNvbnN0
KToKKwogMjAxOS0xMi0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBIZWFwOjpmaW5hbGl6ZSBmdW5jdGlvbiB0aGF0IHRha2VzIFdURjo6RnVuY3Rp
b248dm9pZCgpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc2NmQwZDFhMTVhODFmZjYxNTUyZWY5NWYxNzM1ZmZl
ZmM3NDlhZTcuLjY1YTI1YjAzOWM4YWUxM2I3NTYwYzRjMTIwYzA3NTYwYTAwZWVhY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisKIDIwMTktMTItMTMgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcmlw
dENvbnRyb2xsZXIncyBwcm9saWZlcmF0aW9uIG9mIEV4Y2VwdGlvbkRldGFpbHMqLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IGViOWRjMzA2YjQ0ZmYz
NTAxZmY2NDlkMjlmZmUxMjk0MTIyZDg1YmMuLjQ2MDM1YTlkMTZiZDllMzU1OTVhY2FkOGJlNzIz
M2FmY2UzMzEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBl
ZEFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5j
cHAKQEAgLTE4NCwxMCArMTg0LDEwIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5CiAKICAgICB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUgPSBlbGVtZW50U2l6ZSh0b1R5cGVkQXJyYXlUeXBlKGFy
cmF5VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5
dGVzKGJ5dGVzLCBsZW5ndGgsIFs9XSh2b2lkKiBwKSB7CisgICAgYXV0byBidWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgsIGNyZWF0ZVNoYXJlZFRhc2s8
dm9pZCh2b2lkKik+KFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlmIChkZXN0cnVjdG9yKQogICAg
ICAgICAgICAgZGVzdHJ1Y3RvcihwLCBkZXN0cnVjdG9yQ29udGV4dCk7Ci0gICAgfSk7CisgICAg
fSkpOwogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjcmVhdGVUeXBlZEFycmF5KGdsb2JhbE9iamVj
dCwgYXJyYXlUeXBlLCBXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCAvIGVsZW1lbnRCeXRlU2l6
ZSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zMTIsMTAgKzMxMiwxMCBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1ZmZl
cldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2b2lkKiBieXRlcwogICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhi
eXRlcywgYnl0ZUxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGJ5dGVMZW5ndGgsIGNyZWF0ZVNoYXJlZFRh
c2s8dm9pZCh2b2lkKik+KFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlmIChieXRlc0RlYWxsb2Nh
dG9yKQogICAgICAgICAgICAgYnl0ZXNEZWFsbG9jYXRvcihwLCBkZWFsbG9jYXRvckNvbnRleHQp
OwotICAgIH0pOworICAgIH0pKTsKIAogICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0gSlNB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJl
KEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
IGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4
Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ5OTZjMWU0YmQ2MTY1NWMyYzkxNTkyMjJlMGI0ZWJlZTRlMTcwN2YuLmRiY2U1YmFjZWRjMDVj
M2RjMGVhOGIwNDMzNDZkMTUxZDBkZWY0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03NTIsNyArNzUyLDYgQEAKIAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVD
b25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQzkyMTYxQjk0
RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzkyMTUxQjk0RkIzRTAwNzFERDY2IC8qIERG
R1Byb3BlcnR5VHlwZUtleS5oICovOyB9OwogCQkwRkZDOTlEMTE4NEVDOEFEMDA5QzEwQUIgLyog
Q29uc3RhbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZGQzk5RDUxODRFRTMx
ODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDMxODRFRTMxODAw
OUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkZDOTU4MTRFRjkwQTIw
MEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmgg
Ki87IH07CiAJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEUxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi87IH07CiAJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGRkM5NTAxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1BoYXNlLmggKi87IH07CkBA
IC0zMjUyLDggKzMyNTEsNiBAQAogCQkwRkZCODBCQjIwQTc5NDcwMDAwNkFBRjYgLyogSklUQ29k
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29kZUlubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzkyMTUxQjk0RkIzRTAwNzFE
RDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdQcm9wZXJ0eVR5cGVLZXkuaDsgcGF0aCA9IGRmZy9ERkdQcm9wZXJ0eVR5cGVLZXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFC
IC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25z
dGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGQzk5RDIxODRFRTMx
ODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkZDOTlEMzE4NEVF
MzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0QjE0RUY5MDk1MDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBoYXNlLmg7
IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NTRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdD
U0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTQwLDggKzY5Mzcs
NiBAQAogCQkJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oICov
LAogCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCiAJ
CQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi8sCi0JCQkJMEZG
Qzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dC5jcHAgKi8sCi0JCQkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldC5oICovLAogCQkJCTBGMzBGQjYwMURDMkRFOTYwMDMxMjRGMiAv
KiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggKi8sCiAJCQkJQTdBOEFGMjcxN0FEQjVGMzAwNUFC
MTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJQTdBOEFGMjgxN0FEQjVGMzAwNUFC
MTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovLApAQCAtODg4Myw3ICs4ODc4LDYgQEAKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MzBGQjYxMURDMkRFOTkwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggMTgxOGJmN2VlMDNjNWQ2NTM5NzBmNWM0NDUxYmFjNTE5M2M2ZDRkOC4uNDdiMGNhN2E5NWIw
YjFjNGYyOTRkNjhmMTZlZDFiNTI0MWJmMWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtNzAzLDcgKzcwMyw2IEBAIHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAogcnVudGltZS9B
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKIHJ1bnRpbWUvQXJnTGlzdC5jcHAKIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwCi1ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5j
cHAKIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcAogcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IGMyNDMxZjAzZmNl
OTY3YzJmNmE3ZWU0MGFiZjNkNTYxNTU0NjMzYmUuLjA3YmFiZTczYjRkZTk1ZjY4NmZjZDBjMmI5
MGZjMjUzYjk3ZDViYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Lmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCkBAIC0zOCwxOSArMzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogdm9pZCBBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0FycmF5QnVmZmVyVmlldyogdmlldywgQ29tbW9u
RGF0YSYgY29tbW9uKQogewotICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKKyAgICAvLyB2
aWV3IGlzIGFscmVhZHkgZnJvemVuLiBJZiBpdCBpcyBkZWFsbG9jYXRlZCwgamV0dGlzb25pbmcg
aGFwcGVucy4KICAgICBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQqIHdhdGNocG9pbnQg
PSBudWxscHRyOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jayk7CiAgICAgICAgIHdhdGNocG9pbnQgPSBjb21tb24ud2F0Y2hwb2ludHMu
YWRkKGNvZGVCbG9jayk7CiAgICAgfQotICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9Ci0gICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQo
KS5hZGQoV1RGTW92ZSh3YXRjaHBvaW50KSk7Ci0gICAgY29kZUJsb2NrLT5hZGRDb25zdGFudChD
b25jdXJyZW50SlNMb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spLCBuZXV0ZXJpbmdXYXRjaHBvaW50
KTsKKyAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB2aWV3LT5wb3NzaWJseVNoYXJlZEJ1
ZmZlcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5QnVmZmVyKTsKICAgICAvLyBGSVhNRTog
V2UgZG9uJ3QgbmVlZCB0byBzZXQgdGhpcyB3YXRjaHBvaW50IGF0IGFsbCBmb3Igc2hhcmVkIGJ1
ZmZlcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDEwOAotICAgIHZtLmhlYXAuYWRkUmVmZXJlbmNlKG5ldXRlcmluZ1dhdGNocG9pbnQsIHZpZXct
PnBvc3NpYmx5U2hhcmVkQnVmZmVyKCkpOworICAgIGFycmF5QnVmZmVyLT5uZXV0ZXJpbmdXYXRj
aHBvaW50U2V0KCkuYWRkKFdURk1vdmUod2F0Y2hwb2ludCkpOwogfQogCiB2b2lkIFN5bWJvbFRh
YmxlQWRhcHRvcjo6YWRkKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRl
eCA3OTY0OTg1MzMxNjAzYzM4YmJhZWNlNDNiNDdhOGJhMDg3OWJkODcwLi5iMzIwZjcwN2M5NWYx
MjM5Mzg1MWJjM2IyYjJiNDJiOTU2ZGQwYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcApAQCAtMTM5OSw2ICsxMzk5LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXcqIEdyYXBo
Ojp0cnlHZXRGb2xkYWJsZVZpZXcoSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoIXZpZXctPmxlbmd0
aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsK
KyAgICBmcmVlemUodmlldyk7CiAgICAgd2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodmlldyk7CiAg
ICAgcmV0dXJuIHZpZXc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAKaW5kZXggMDdiZGEzOGE2ZTIyOGFmZGQwNDFiMjE4NjBjN2FmNDIzMTIzMzQ3
NS4uMTg5YjRhYzQ1NGFlYTY5OGI5MmI0ZjAzOWNjYmM5MzBjMTI0YWJjOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMjYsMTMgKzI2LDIy
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKIAotI2lu
Y2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0
Zi9HaWdhY2FnZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUmVmPFNoYXJlZFRhc2s8dm9pZCh2
b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKK3sKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4+
IGRlc3RydWN0b3I7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgZGVzdHJ1Y3Rvci5jb25zdHJ1Y3Qo
Y3JlYXRlU2hhcmVkVGFzazx2b2lkKHZvaWQqKT4oW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZy
ZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcCk7IH0pKTsKKyAgICB9KTsKKyAgICByZXR1cm4gZGVz
dHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7Cit9CisKIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6
OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRh
dGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKQEAgLTQy
LDggKzUxLDEwIEBAIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwKIAogU2hhcmVkQXJyYXlCdWZmZXJD
b250ZW50czo6flNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKQogewotICAgIC8vIEZJWE1FOiB3
ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTc2OTgKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdldFVuc2FmZSgp
KTsKKyAgICBpZiAobV9kZXN0cnVjdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGRu
J3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTc2OTgKKyAgICAgICAgbV9kZXN0cnVjdG9yLT5ydW4obV9kYXRhLmdldFVuc2FmZSgp
KTsKKyAgICB9CiB9CiAKIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMo
KQpAQCAtODQsMTUgKzk1LDE3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6Y2xlYXIoKQog
CiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OmRlc3Ryb3koKQogewotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk3Njk4Ci0gICAgbV9kZXN0cnVjdG9yKG1fZGF0YS5nZXRVbnNhZmUo
KSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvcikgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IHVzZSBnZXRVbnNhZmUgaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzY5OAorICAgICAgICBtX2Rlc3RydWN0b3ItPnJ1bihtX2RhdGEuZ2V0VW5zYWZl
KCkpOworICAgIH0KIH0KIAogdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiB7Ci0g
ICAgbV9kZXN0cnVjdG9yID0gW10gKHZvaWQqKSB7IH07Ci0gICAgbV9zaGFyZWQgPSBudWxscHRy
OwogICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kZXN0cnVjdG9yID0gbnVsbHB0cjsKKyAg
ICBtX3NoYXJlZCA9IG51bGxwdHI7CiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKQEAgLTEy
MywxMyArMTM2LDEzIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAKICAgICBtX3NpemVJbkJ5
dGVzID0gc2l6ZUluQnl0ZXM7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5CeXRlcyA8PSBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2b2lkKiBwKSB7
IEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHApOyB9OworICAgIG1fZGVzdHJ1
Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KIAog
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKCkKIHsKICAgICBtX3NoYXJlZCA9
IGFkb3B0UmVmKG5ldyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKGRhdGEoKSwgc2l6ZUluQnl0
ZXMoKSwgV1RGTW92ZShtX2Rlc3RydWN0b3IpKSk7Ci0gICAgbV9kZXN0cnVjdG9yID0gW10gKHZv
aWQqKSB7IH07CisgICAgbV9kZXN0cnVjdG9yID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQpAQCAt
MTU4LDkgKzE3MSw5IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKEFycmF5
QnVmZmVyQ29udGVudHMmIG90aGVyKQogewogICAgIEFTU0VSVCghb3RoZXIubV9kYXRhKTsKICAg
ICBBU1NFUlQobV9zaGFyZWQpOwotICAgIG90aGVyLm1fZGVzdHJ1Y3RvciA9IFtdICh2b2lkKikg
eyB9OwotICAgIG90aGVyLm1fc2hhcmVkID0gbV9zaGFyZWQ7CiAgICAgb3RoZXIubV9kYXRhID0g
bV9kYXRhOworICAgIG90aGVyLm1fZGVzdHJ1Y3RvciA9IG51bGxwdHI7CisgICAgb3RoZXIubV9z
aGFyZWQgPSBtX3NoYXJlZDsKICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRl
czsKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9C
VUZGRVJfU0laRSk7CiB9CkBAIC0xOTcsNyArMjEwLDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vICAgZnJv
bSB0aGUgY2FnZS4KIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlRnJvbUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIFtdICh2b2lkKiBwKSB7IEdpZ2FjYWdlOjpm
cmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHApOyB9KTsKKyAgICByZXR1cm4gY3JlYXRlRnJvbUJ5
dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKSk7CiB9CiAKIC8vIEZJWE1FOiBXZSBjYW5ub3QgdXNlIHRoaXMgZXhjZXB0IGlmIHRo
ZSBtZW1vcnkgY29tZXMgZnJvbSB0aGUgY2FnZS4KQEAgLTM3MSw2ICszODQsNyBAQCBib29sIEFy
cmF5QnVmZmVyOjp0cmFuc2ZlclRvKFZNJiB2bSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0
KQogCiAgICAgbV9jb250ZW50cy50cmFuc2ZlclRvKHJlc3VsdCk7CiAgICAgbm90aWZ5SW5jb21t
aW5nUmVmZXJlbmNlc09mVHJhbnNmZXIodm0pOworICAgIG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNl
dC5maXJlQWxsKHZtLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zODEsNiArMzk1LDcgQEAgdm9pZCBBcnJheUJ1ZmZlcjo6bmV1dGVyKFZN
JiB2bSkKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIHVudXNlZDsKICAgICBtX2NvbnRlbnRzLnRy
YW5zZmVyVG8odW51c2VkKTsKICAgICBub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2Zl
cih2bSk7CisgICAgbV9uZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmZpcmVBbGwodm0sICJBcnJheSBi
dWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6Om5vdGlmeUluY29t
bWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKFZNJiB2bSkKQEAgLTM4OSw4ICs0MDQsNiBAQCB2b2lk
IEFycmF5QnVmZmVyOjpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYgdm0p
CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGluY29taW5nUmVmZXJlbmNlQXQoaSk7CiAgICAgICAg
IGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
clZpZXcqPih2bSwgY2VsbCkpCiAgICAgICAgICAgICB2aWV3LT5uZXV0ZXIoKTsKLSAgICAgICAg
ZWxzZSBpZiAoQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50ID0g
anNEeW5hbWljQ2FzdDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqPih2bSwgY2Vs
bCkpCi0gICAgICAgICAgICB3YXRjaHBvaW50LT5maXJlQWxsKCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBlNmY1NWNlMGJk
OTg5ZGZiMTVkNjY0MmQ2ZjhhYjVjM2JmNDUyZmQ5Li45YTY1ODVmZjViYTI2NGUzYzVmMDUxNTNh
M2I1N2I1NzU5ZmNmYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmgKQEAgLTI3LDEwICsyNywxMiBAQAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZS5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkLmgiCisjaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlIDx3dGYvQ2FnZWRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1No
YXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00NCw3ICs0Niw4IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogY2xhc3MgQXJyYXlCdWZmZXJW
aWV3OwogY2xhc3MgSlNBcnJheUJ1ZmZlcjsKIAotdHlwZWRlZiBGdW5jdGlvbjx2b2lkKHZvaWQq
KT4gQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb247Cit1c2luZyBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiA9IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj47Cit1c2luZyBQ
YWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQodm9pZCopPj47CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewog
cHVibGljOgpAQCAtNTYsNyArNTksNyBAQCBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRz
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQwogcHJpdmF0
ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZv
aWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7Ci0gICAgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOworICAgIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVz
OwogfTsKIApAQCAtOTgsMTAgKzEwMSwxMCBAQCBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsK
ICAgICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CiAgICAgdm9pZCBzaGFyZVdp
dGgoQXJyYXlCdWZmZXJDb250ZW50cyYpOwogCi0gICAgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRz
PiBtX3NoYXJlZDsKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CisgICAgUGFj
a2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOworICAgIFBhY2tl
ZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKICAgICB1bnNpZ25l
ZCBtX3NpemVJbkJ5dGVzOwogfTsKIApAQCAtMTQ4LDExICsxNTEsMTQgQEAgY2xhc3MgQXJyYXlC
dWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIAogICAg
IHZvaWQgbmV1dGVyKFZNJik7CiAgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fY29u
dGVudHMubV9kYXRhOyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbmV1dGVyaW5nV2F0Y2hw
b2ludFNldCgpIHsgcmV0dXJuIG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldDsgfQogCiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkRhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJy
YXlCdWZmZXIsIG1fY29udGVudHMpICsgT0JKRUNUX09GRlNFVE9GKEFycmF5QnVmZmVyQ29udGVu
dHMsIG1fZGF0YSk7IH0KIAogICAgIH5BcnJheUJ1ZmZlcigpIHsgfQogCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2ln
YWNhZ2VEZXN0cnVjdG9yKCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNv
bnN0IHZvaWQqLCB1bnNpZ25lZCk7CkBAIC0xNjUsMTQgKzE3MSwxNSBAQCBjbGFzcyBBcnJheUJ1
ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogICAgIHZv
aWQgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIoVk0mKTsKIAogICAgIEFycmF5
QnVmZmVyQ29udGVudHMgbV9jb250ZW50czsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fbmV1
dGVyaW5nV2F0Y2hwb2ludFNldCB7IElzV2F0Y2hlZCB9OworcHVibGljOgorICAgIFdlYWs8SlNB
cnJheUJ1ZmZlcj4gbV93cmFwcGVyOworcHJpdmF0ZToKICAgICBDaGVja2VkPHVuc2lnbmVkPiBt
X3BpbkNvdW50OwogICAgIGJvb2wgbV9pc1dhc21NZW1vcnk7CiAgICAgLy8gbV9sb2NrZWQgPT0g
dHJ1ZSBtZWFucyB0aGF0IHNvbWUgQVBJIHVzZXIgZmV0Y2hlZCBtX2NvbnRlbnRzIGRpcmVjdGx5
IGZyb20gYSBUeXBlZEFycmF5IG9iamVjdCwKICAgICAvLyB0aGUgYnVmZmVyIGlzIGJhY2tlZCBi
eSBhIFdlYkFzc2VtYmx5Lk1lbW9yeSwgb3IgaXMgYSBTaGFyZWRBcnJheUJ1ZmZlci4KICAgICBi
b29sIG1fbG9ja2VkOwotCi1wdWJsaWM6Ci0gICAgV2VhazxKU0FycmF5QnVmZmVyPiBtX3dyYXBw
ZXI7CiB9OwogCiB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIxNmQ4MTJh
NGJjNTdjOGNlZjNhYjdhY2E3ZDMzOGM1YzBjOTNiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQuaCIKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6
OnNfaW5mbyA9IHsKLSAgICAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IiwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCkKLX07Ci0KLUFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJiB2bSkKLSAg
ICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5n
ZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQp
KSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19jYXN0PEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6
On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKTsKLX0KLQotQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6
OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
KiByZXN1bHQgPSBuZXcKLSAgICAgICAgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+KHZtLmhlYXApKQotICAgICAgICBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTZXQodm0pOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQotewotICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0OjpmaXJlQWxsKCkKLXsKLSAgICBtX3NldC0+ZmlyZUFsbCh2bSgpLCAiQXJyYXkg
YnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGM3MzdjY2U1OGMxYzk3ZDExNWE2MDljZGIzMGQwMTExOTQxMjNlYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUg
IldhdGNocG9pbnQuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewotcHVibGljOgotICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
LQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICAKLSAgICBzdGF0aWMgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0KiBjcmVhdGUoVk0mKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOwot
ICAgIAotICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9Ci0g
ICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJik7Ci0gICAgCi0gICAgUmVmPFdhdGNocG9p
bnRTZXQ+IG1fc2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggOWQ1NGZkY2Q4NDczZDcyM2ZiYWVjYTUxMzQ5MDYxZDk1MjAy
NGI5MS4uMTk4YzBlNTExM2VmYmRiNDRlY2JmNTVlN2Q2NmRiMWNhOTM5NzY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlZN
LmgiCiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAi
Qm9vbGVhbk9iamVjdC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgpAQCAtNDY0
LDcgKzQ2Myw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1h
cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVC
bG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZhbENvZGVCbG9j
a1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggZTlhOTBmMDkwYWY1YWE4ZjhhM2IxNzNmMjE0ZWJlYTIzNmEzOWQ0MC4uOWQ5Y2VmZDI0OGMx
NDU5NzU4ODIwNTkyNzAxMjJiMmIzZTY1OGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC02NjcsNyArNjY3LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBh
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKaW5kZXgg
M2Y4YmUzNmVmNmZiMDFjNmQ3MGQ3M2U4MzNkZjI2NTE0YzUxMDlhYS4uMTNjNjJmNjgzNDA2Njdh
NzQxODVlODhhZmJjNzg5YmI3ZjcwMmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
SlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIC8vIFdlIGNhbid0IHVzZSBhIHJlZiBoZXJl
IHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3RydWN0b3IuLi4KICAgICBSZWY8V2Fz
bTo6TWVtb3J5PiBwcm90ZWN0ZWRNZW1vcnkgPSBtX21lbW9yeS5nZXQoKTsKLSAgICBhdXRvIGRl
c3RydWN0b3IgPSBbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAo
dm9pZCopIHsgfTsKKyAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPihbcHJvdGVjdGVkTWVtb3J5ID0gV1RGTW92ZShwcm90ZWN0ZWRNZW1vcnkpXSAodm9p
ZCopIHsgfSk7CiAgICAgbV9idWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKG1l
bW9yeSgpLm1lbW9yeSgpLCBtZW1vcnkoKS5zaXplKCksIFdURk1vdmUoZGVzdHJ1Y3RvcikpOwog
ICAgIG1fYnVmZmVyLT5tYWtlV2FzbU1lbW9yeSgpOwogICAgIG1fYnVmZmVyV3JhcHBlci5zZXQo
dm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1
ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgbV9idWZmZXIu
Z2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhl
OGVjMTU5YTcxNDRmNjFhZDU4MGU1NjA1ZWM0MjdlNjljMzk4OGUuLjViZDdhYjQzZGUwNmY4OTNj
MTY0ZDU5OWM2Y2M0ZjVmYjE3YjA1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjczLDYgKzY3Myw4IEBACiAJCUUzNENEMEQwMjI4MTBBMDIwMDIwRDI5
OSAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBV
bmV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4
IC8qIFBhY2tlZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM2ODk1Q0MyM0E0NDVFRTAwOERENEM4IC8qIFBhY2tlZFJlZlB0
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWZQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQ
b29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclBvb2wuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQ
VVRpbWVDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVU
aW1lQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3Nyw2ICsxMDc5
LDggQEAKIAkJCQlBOEE0NzJEQjE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuaCAq
LywKIAkJCQlFMzRDRDBEMDIyODEwQTAyMDAyMEQyOTkgLyogUGFja2VkLmggKi8sCiAJCQkJQThB
NDcyREYxNTFBODI1QjAwNDEyM0ZGIC8qIFBhY2tlZEludFZlY3Rvci5oICovLAorCQkJCUUzNjg5
NUNCMjNBNDQ1Q0QwMDhERDRDOCAvKiBQYWNrZWRSZWYuaCAqLywKKwkJCQlFMzY4OTVDQzIzQTQ0
NUVFMDA4REQ0QzggLyogUGFja2VkUmVmUHRyLmggKi8sCiAJCQkJQThBNDcyRTAxNTFBODI1QjAw
NDEyM0ZGIC8qIFBhZ2VBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyRTMxNTFBODI1QjAwNDEy
M0ZGIC8qIFBhZ2VCbG9jay5jcHAgKi8sCiAJCQkJQThBNDcyRTQxNTFBODI1QjAwNDEyM0ZGIC8q
IFBhZ2VCbG9jay5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBhZmNjNjBlMjIwMzI1Y2Ix
MDlmZWQ5YWVmNDgxYmQ5Yzk2ZjM4ZmY1Li5kYWU0YTcxYjI4ZDEzMDQyNGMwYmQ3MzFiZTQxNjQz
ZjA1MmIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTU1LDYgKzE1NSw4IEBAIHNldChX
VEZfUFVCTElDX0hFQURFUlMKICAgICBPcHRpb25hbC5oCiAgICAgT3JkZXJNYWtlci5oCiAgICAg
UGFja2VkLmgKKyAgICBQYWNrZWRSZWYuaAorICAgIFBhY2tlZFJlZlB0ci5oCiAgICAgUGFja2Vk
SW50VmVjdG9yLmgKICAgICBQYWdlQWxsb2NhdGlvbi5oCiAgICAgUGFnZUJsb2NrLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhY2tlZC5oIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgK
aW5kZXggODM5ZDNjODczMTVlNTAxMDhiYzk3MTgwNmNhOTQ1OThjMzEwMzllYi4uYjIyZmM3NjFk
NDI5NzRiOTgxMjViYjdlN2QxYzJkMWY5YTU3ODMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGFja2VkLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKQEAgLTE2Myw2ICsxNjMs
MTAgQEAgY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIGdldCgpOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdl
dCgpOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKwor
ICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lv
biB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQq
IChQYWNrZWRBbGlnbmVkUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldCgpID8gJlBhY2tlZEFsaWdu
ZWRQdHI6Om1fc3RvcmFnZSA6IG51bGxwdHI7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KIAogICAgIFBhY2tlZEFsaWduZWRQdHImIG9wZXJh
dG9yPShUKiB2YWx1ZSkKQEAgLTE3Miw5ICsxNzYsOSBAQCBjbGFzcyBQYWNrZWRBbGlnbmVkUHRy
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgIFQgZXhjaGFuZ2UoVSYmIG5l
d1ZhbHVlKQorICAgIFQqIGV4Y2hhbmdlKFUmJiBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIFQg
b2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKICAgICAgICAg
c2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7
CiAgICAgfQpAQCAtMTg5LDE1ICsxOTMsMTUgQEAgY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxP
dGhlcjo6aXNQYWNrZWRUeXBlPj4KICAgICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQogICAgIHsK
LSAgICAgICAgVCB0MSA9IGdldCgpOwotICAgICAgICBUIHQyID0gb3RoZXIuZ2V0KCk7CisgICAg
ICAgIFQqIHQxID0gZ2V0KCk7CisgICAgICAgIFQqIHQyID0gb3RoZXIuZ2V0KCk7CiAgICAgICAg
IHNldCh0Mik7CiAgICAgICAgIG90aGVyLnNldCh0MSk7CiAgICAgfQogCi0gICAgdm9pZCBzd2Fw
KFQmIHQyKQorICAgIHZvaWQgc3dhcChUKiB0MikKICAgICB7Ci0gICAgICAgIFQgdDEgPSBnZXQo
KTsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKICAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CiAg
ICAgICAgIHNldCh0MSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2Vk
UmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGVjZGZmOGQ3
NmUzN2M3ZjM5ZmI4YWQ5ZDg3N2M2OTA1MzQyMWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvUGFja2VkUmVmLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRSZWYgPSBSZWY8VCwgUGFja2VkUHRyVHJh
aXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UGFja2VkUmVmOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QYWNrZWRSZWZQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQ3ZDdkZmI2NTdmZWEzZWU3NjAzZjA3MjI3
NDI2NzUwZDc2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkUmVm
UHRyLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+Cit1c2luZyBQYWNrZWRSZWZQdHIgPSBSZWZQdHI8VCwgUGFja2VkUHRyVHJhaXRzPFQ+
PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UGFja2VkUmVmUHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAppbmRleCA1YmVjNmM3ZWUyMGU4NjcyMzUyNzkzMDcyOGU4Y2YxODNkYjliNDhiLi42ZDRjNjQ0
NGU3ZWFmMWFhMWVhYWY0MzI5YTVmNjk4ZjA5M2VkMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtODEsOCArODEs
OCBAQCBjbGFzcyBSZWZQdHIgewogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
IW1fcHRyOyB9CiAKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxp
Y2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0g
ICAgdHlwZWRlZiBUKiAoUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7Ci0gICAgb3BlcmF0
b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6
bV9wdHIgOiBudWxscHRyOyB9CisgICAgdXNpbmcgVW5zcGVjaWZpZWRCb29sVHlwZSA9IHZvaWQg
KFJlZlB0cjo6KikoKSBjb25zdDsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjp1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFu
Y2UgOiBudWxscHRyOyB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gISFtX3B0cjsgfQogICAgIApAQCAtMTAyLDYgKzEwMiw4IEBAIGNsYXNzIFJlZlB0ciB7
CiAgICAgUmVmUHRyIGNvcHlSZWYoKSBjb25zdCAmIFdBUk5fVU5VU0VEX1JFVFVSTiB7IHJldHVy
biBSZWZQdHIobV9wdHIpOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xU
eXBlSW5zdGFuY2UoKSBjb25zdCB7IH0KKwogICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwg
UHRyVHJhaXRzPihUKik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJp
ZW5kIGNsYXNzIFJlZlB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBlNTY5NjI4ODJkZjM3MmQwNGJjNmQ4MzFhZmFk
MWIxYmYyNTE0NzRmLi5hNGI5ZjY2ZDBlODdkMDIxMzIwZTM0NjkzNjA2ZjA0M2Y4NTNlNzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtMTcwLDE0ICsxNzAsMTEgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gR2lnYWNhZ2U6OnRy
eU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBidWZmZXJTaXplKTsKLSAgICAgICAgYXV0byBk
ZXN0cnVjdG9yID0gW10gKHZvaWQqIHB0cikgewotICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgcHRyKTsKLSAgICAgICAgfTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwg
YnVmZmVyU2l6ZSwgMSkpIHsKLSAgICAgICAgICAgIGRlc3RydWN0b3IoYnVmZmVyKTsKKyAgICAg
ICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJ1ZmZlcik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgV1RGTW92ZShkZXN0cnVj
dG9yKSB9KTsKKyAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5hcHBlbmQoeyBidWZm
ZXIsIGJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3Io
KSB9KTsKICAgICB9CiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODdj
NzIyNTU0NzI4YjA0NTI0ZjZiNDIzZmMwMWQxYTVjMDcwM2JmNS4uYWM5ZDFmODg0NjY3MTg5M2U1
NDRhZDgzNWVkMWEyNWQ4MjY5NmE5YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEyLTEzICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBQYWNrZWRSZWYgYW5kIFBhY2tlZFJlZlB0
ci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmLmNwcDogQWRkZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnBh
c3NXaXRoUmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZkNoZWNraW5nUmVm
TG9nZ2VyOjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpkZXJlZik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcml2ZWRQYWNr
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUGFja2VkUmVmUHRyLmNwcDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUmVmUHRyLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZjEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29uc3RSZWZD
b3VudGVkOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuQ29uc3RSZWZD
b3VudGVkUmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVyblJlZkNvdW50ZWRSZWYp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6
OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmxvZ2dlck5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI6OnJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1JlZlB0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6CisKIDIwMTktMTItMTMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRo
ZSBtYWNDYXRhbHlzdCBidWlsZCBhZnRlciByMjUzNDg2CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA4N2Y4NDQyMTAxYTBkZjdmZGYyZWMwZDE0YjE1ZjA3NjQyYTM0ZTcyLi5jOTE3
MDM2M2VlM2IwNDUwYzYzMTEzYWFhNThiNWQ5NmY2MTFiZTU0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKQEAgLTY1LDYgKzY1LDggQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRl
c3RzL1dURi9PcHRpb25TZXQuY3BwCiAgICAgVGVzdHMvV1RGL09wdGlvbmFsLmNwcAogICAgIFRl
c3RzL1dURi9QYWNrZWQuY3BwCisgICAgVGVzdHMvV1RGL1BhY2tlZFJlZi5jcHAKKyAgICBUZXN0
cy9XVEYvUGFja2VkUmVmUHRyLmNwcAogICAgIFRlc3RzL1dURi9QYXJraW5nTG90LmNwcAogICAg
IFRlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAogICAgIFRlc3RzL1dURi9SZWRCbGFja1RyZWUu
Y3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjZGNhNzM1YjBlNDlmZjlmNDlmMThjYThh
Yzc1NDVmZGU5MDgxMWIuLjdjMmY4ZjM0M2UwNjI3ZGRiYzgyMTE0Y2YxY2UwMzE3ZTg4NTRmODcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjcsNiArOTY3LDggQEAKIAkJRTM1RkM3QjIy
MkI4MkE3MzAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUZDN0IxMjJCODJBNkQwMEYz
MkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gKi87IH07CiAJCUUzNzNENzkxMUYy
Q0YzNTIwMEM2RkFBRiAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAvKiBTaWduYWxzLmNw
cCAqLzsgfTsKIAkJRTM4QTBEMzUxRkQ1MENDMzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMEQzNDFGRDUw
Q0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLzsgfTsKKwkJRTM4RDY1Q0EyM0E0NUZBQTAw
NjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhENjVDODIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCAq
LzsgfTsKKwkJRTM4RDY1Q0IyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENjVDOTIzQTQ1
RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCAqLzsgfTsKIAkJRTNBMUU3N0YyMUIyNUIz
OTAwOEM2MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyog
VVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLzsgfTsKIAkJRTNBMUU3ODIyMUIyNUI3QTAwOEM2
MDA3IC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0ExRTc4MDIxQjI1Qjc5MDA4QzYwMDcgLyogVVJMLmNwcCAqLzsgfTsKIAkJRTNBMUU3
ODUyMUIyNUI5MTAwOEM2MDA3IC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ExRTc4NDIxQjI1QjkxMDA4QzYwMDcgLyogVVJM
UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTI0OTIsNiArMjQ5NCw4IEBACiAJCUUzNUZDN0IxMjJCODJB
NkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODcwMjBDOTA5ODEwMEU2MzJCQyAvKiBX
b3JrZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
clBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMEQzNDFGRDUwQ0JD
MDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOEQ2
NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM4RDY1QzkyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWRSZWZQdHIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFs
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWduYWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8q
IFVuaXF1ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVu
aXF1ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMUU3N0UyMUIy
NUIzOTAwOEM2MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc1OSw2ICszNzYzLDggQEAKIAkJCQkxQUZERTY1NDE5
NTNCMkMwMDBDNDhGRkEgLyogT3B0aW9uYWwuY3BwICovLAogCQkJCUNFNTBEOEM4MUM4NjY1Q0Uw
MDcyRUE1QSAvKiBPcHRpb25TZXQuY3BwICovLAogCQkJCUUzMkI1NDkxMjI4MTBBQzAwMDhBRDcw
MiAvKiBQYWNrZWQuY3BwICovLAorCQkJCUUzOEQ2NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNr
ZWRSZWYuY3BwICovLAorCQkJCUUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWZQ
dHIuY3BwICovLAogCQkJCTBGRTQ0Nzk3MUI3NkYxRTMwMDk0OThFQiAvKiBQYXJraW5nTG90LmNw
cCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAg
Ki8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAgKi8s
CkBAIC00NDQ4LDYgKzQ0NTQsOCBAQAogCQkJCTFBNzdCQUEzMUQ5QUZGRkMwMDVGQzU2OCAvKiBP
cHRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDIxRDBBNTkwQzAwRkVCQ0Yz
IC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMkI1NDkyMjI4MTBBQzQw
MDhBRDcwMiAvKiBQYWNrZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM4RDY1Q0EyM0E0NUZB
QTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzhENjVDQjIz
QTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNERjU5MUQwQTU5MEMwMEZFQkNGMyAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5MEMwMEZFQkNGMyAvKiBSZWRCbGFja1RyZWUuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9QYWNrZWRSZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVm
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2FiZWI3NGMwNTZkYThlZjE0MjE0NGMwYzNjNzE1N2JlMDhlOTY4
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2Vk
UmVmLmNwcApAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWYuaD4K
KyNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVChXVEZfUGFja2VkUmVmLCBCYXNpYykKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYS5u
YW1lLCAmcmVmLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8
UmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5w
dHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisK
K1RFU1QoV1RGX1BhY2tlZFJlZiwgQXNzaWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygi
YyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgcmVmID0gYjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAg
ICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihi
KSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9IGM7
CisgICAgICAgIEVYUEVDVF9FUSgmYywgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwg
IjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBk
ZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBhZG9wdFJlZihiKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9n
Z2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAg
bG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYyk7CisgICAgICAgIEVYUEVD
VF9FUSgmYywgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKK30KKworc3RhdGljIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHBhc3NXaXRoUmVm
KFBhY2tlZFJlZjxSZWZMb2dnZXI+JiYgcmVmZXJlbmNlKQoreworICAgIHJldHVybiBXVEZNb3Zl
KHJlZmVyZW5jZSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgUmV0dXJuVmFsdWUpCit7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBE
ZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxv
Z2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBhY2tlZFJlZjxSZWZMb2dnZXI+KGEpKSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQ
YWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0
cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcmVmID0gcGFzc1dpdGhSZWYo
Yik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkg
fCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBh
Y2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0cikpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8RGVyaXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJl
ZmVyZW5jZShhKTsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5jZShw
YXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIGRlcml2ZWRSZWZlcmVuY2UucHRyKCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIGJh
c2VSZWZlcmVuY2UucHRyKCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYo
YSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNU
KFdURl9QYWNrZWRSZWYsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZM
b2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMShh
KTsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAyLnB0cigpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDEucHRyKCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLnB0cigpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIp
IHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQYWNrZWRSZWY8
UmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOworICAg
ICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5wdHIoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRl
cmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworc3RydWN0IFBhY2tlZFJlZkNo
ZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKKyAgICBQYWNrZWRSZWZDaGVja2luZ1JlZkxv
Z2dlcihjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIHJlZigpOworICAgIHZvaWQgZGVyZWYo
KTsKKyAgICBjb25zdCBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+KiBzbG90
VG9DaGVjayB7IG51bGxwdHIgfTsKK307CisKK3N0cnVjdCBEZXJpdmVkUGFja2VkUmVmQ2hlY2tp
bmdSZWZMb2dnZXIgOiBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciB7CisgICAgRGVyaXZlZFBh
Y2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworfTsKKworUGFja2Vk
UmVmQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNo
YXIqIG5hbWUpCisgICAgOiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKwordm9pZCBQYWNrZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAg
ICAgIGxvZygpIDw8ICJzbG90PSIgPDwgc2xvdFRvQ2hlY2stPmdldCgpLm5hbWUgPDwgIiAiOwor
ICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQgUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dn
ZXI6OmRlcmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAgICAgIGxvZygpIDw8ICJz
bG90PSIgPDwgc2xvdFRvQ2hlY2stPmdldCgpLm5hbWUgPDwgIiAiOworICAgIFJlZkxvZ2dlcjo6
ZGVyZWYoKTsKK30KKworRGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpEZXJpdmVk
UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IFBhY2tl
ZFJlZkNoZWNraW5nUmVmTG9nZ2VyIHsgbmFtZSB9Cit7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJl
ZiwgQXNzaWduQmVmb3JlRGVyZWYpCit7CisgICAgRGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVm
TG9nZ2VyIGEoImEiKTsKKyAgICBQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7Cisg
ICAgRGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmPFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyPiByZWYoYSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAg
ICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcmVm
OworICAgICAgICByZWYgPSBiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAg
ICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcmVm
LnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFBhY2tlZFJl
ZkNoZWNraW5nUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0
cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZy
ZWY7CisgICAgICAgIGMuc2xvdFRvQ2hlY2sgPSAmcmVmOworICAgICAgICByZWYgPSBjOworICAg
ICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYy5zbG90VG9DaGVjayA9IG51
bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWEgcmVmKGMp
IHNsb3Q9YyBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyPiByZWYo
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGFkb3B0
UmVmKGIpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFBhY2tlZFJlZkNo
ZWNraW5nUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWY7
CisgICAgICAgIHJlZiA9IGFkb3B0UmVmKGMpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVs
bHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YyBkZXJlZihh
KSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUGFja2VkUmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tl
ZFJlZlB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFhN2IwYWQ0ZmVlNTJkMjMxOTk3N2NlZmEwNTQwYjYx
NTI0MTg0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhY2tlZFJlZlB0ci5jcHAKQEAgLTAsMCArMSw1NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlICJVdGlsaXRp
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUGFj
a2VkUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFdURl9QYWNrZWRSZWZQdHIsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gZW1wdHk7CisgICAgRVhQRUNUX0VRKG51
bGxwdHIsIGVtcHR5LmdldCgpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxv
Z2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHIt
Pm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHB0ciA9ICZhOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDE7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxv
Z2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4g
cDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRS
ZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAx
LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdU
Rl9QYWNrZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKK3sKKyAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHBhc3NS
ZWYoYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFz
c1JlZik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQor
CitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFkb3B0KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIg
YSgiYSIpOworCisgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gZW1wdHk7CisgICAgRVhQRUNU
X0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEVYUEVDVF9F
USgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBBc3NpZ25tZW50KQor
eworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIo
JmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIs
IHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGIpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7Cisg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZiKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51
bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAg
ICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQ
YWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYywg
cDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9n
KCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgcmVm
KGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgICAgIHB0ciA9ICZjOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHB0ci5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVm
KGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHB0
ciA9IGFkb3B0UmVmKCZjKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwdHIuZ2V0KCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRl
cmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8
IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgewor
ICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XdW5rbm93bi13YXJuaW5nLW9wdGlvbiIKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3NlbGYtYXNzaWduLW92ZXJsb2FkZWQiCisjZW5kaWYKKyAgICAg
ICAgcHRyID0gcHRyOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYo
YSkgZGVyZWYoYSkgfCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtu
b3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1v
dmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENM
QU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQ
dHIsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIp
OworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgbG9nKCkgPDwgInwg
IjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YiwgcDIuZ2V0KCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8
IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsK
KyAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihh
KSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tl
ZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAg
IFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOwor
ICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlKQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZM
b2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RG
TW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBh
Y2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZM
b2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+
IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0
ciwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7
CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVs
bHB0ciwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKK30KKworc3RhdGljIFJlZlB0cjxSZWZMb2dnZXI+IGYxKFJlZkxvZ2dl
ciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPigmbG9nZ2Vy
KTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgZjEoYSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgYXV0byBwdHIgPSBmMShhKTsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdHJ1
Y3QgQ29uc3RSZWZDb3VudGVkIDogUmVmQ291bnRlZDxDb25zdFJlZkNvdW50ZWQ+IHsKKyAgICBz
dGF0aWMgUmVmPENvbnN0UmVmQ291bnRlZD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb25zdFJlZkNvdW50ZWQpOyB9Cit9OworCitzdGF0aWMgY29uc3QgQ29uc3RSZWZDb3VudGVk
JiByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDb25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsK
K30KK3N0YXRpYyBDb25zdFJlZkNvdW50ZWQmIHJldHVyblJlZkNvdW50ZWRSZWYoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOworICAgIHJl
dHVybiBpbnN0YW5jZS5nZXQoKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBDb25zdCkK
K3sKKyAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVzIHdpdGhvdXQgYW4gZXJy
b3IuCisgICAgYXV0byBhID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBQYWNrZWRS
ZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBiID0gV1RGTW92ZShhKTsKKyAgICBQYWNrZWRSZWZQ
dHI8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKKyAgICBQYWNrZWRSZWY8Y29u
c3QgQ29uc3RSZWZDb3VudGVkPiBkID0gcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7CisgICAg
UGFja2VkUmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZSA9ICZyZXR1cm5Db25zdFJlZkNv
dW50ZWRSZWYoKTsKKyAgICBQYWNrZWRSZWZQdHI8Q29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RS
ZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBQYWNrZWRSZWZQdHI8Y29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBnID0gZjsKKyAgICBQYWNrZWRSZWZQdHI8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBoKGYp
OworICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGkocmV0dXJuUmVmQ291bnRl
ZFJlZigpKTsKK30KKworc3RydWN0IFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIDogUmVm
TG9nZ2VyIHsKKyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBu
YW1lKTsKKyAgICB2b2lkIHJlZigpOworICAgIHZvaWQgZGVyZWYoKTsKKyAgICBjb25zdCBQYWNr
ZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+KiBzbG90VG9DaGVjayB7IG51
bGxwdHIgfTsKK307CisKK1BhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpQYWNrZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogUmVmTG9nZ2VyIHsg
bmFtZSB9Cit7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBsb2dnZXJOYW1lKGNvbnN0IFBhY2tl
ZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4mIHBvaW50ZXIpCit7CisgICAg
cmV0dXJuIHBvaW50ZXIgPyAmcG9pbnRlci0+bmFtZSA6ICJudWxsIjsKK30KKwordm9pZCBQYWNr
ZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2sp
CisgICAgICAgIGxvZygpIDw8ICJzbG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hlY2spIDw8
ICIgIjsKKyAgICBSZWZMb2dnZXI6OnJlZigpOworfQorCit2b2lkIFBhY2tlZFJlZlB0ckNoZWNr
aW5nUmVmTG9nZ2VyOjpkZXJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNrKQorICAgICAgICBs
b2coKSA8PCAic2xvdD0iIDw8IGxvZ2dlck5hbWUoKnNsb3RUb0NoZWNrKSA8PCAiICI7CisgICAg
UmVmTG9nZ2VyOjpkZXJlZigpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIEFzc2lnbkJl
Zm9yZURlcmVmKQoreworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsK
KyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDEoJmEpOwor
ICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAyKCZi
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0No
ZWNrID0gJnAxOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gJnAxOworICAgICAgICBwMSA9IHAy
OworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVj
ayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgc2xvdD1hIHJlZihiKSBzbG90PWIgZGVy
ZWYoYSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgYi5zbG90
VG9DaGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBhLnNsb3RUb0NoZWNr
ID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVY
UEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8
IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcHRy
OworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0
cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVsbCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2lu
Z1JlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hl
Y2tpbmdSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnAxOworICAgICAgICBiLnNsb3RUb0NoZWNrID0g
JnAxOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0g
bnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIEVYUEVD
VF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYikgfCBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgUmVsZWFzZU5vbk51bGxCZWZvcmVE
ZXJlZikKK3sKKyAgICBQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CisKKyAg
ICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4g
cmVmUHRyID0gJmE7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcmVmUHRyOworICAgICAgICBy
ZWZQdHIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7
CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMDk4ODMwNmRm
ODQ2ZjgzZDM1MmFkODc4NDNkOTM0ZDY3ZDk3MTAxMi4uZjg4MzU5YTBiYWExZjgxYzk4YWZiN2Rl
ZGNlZmFkNzNlYTg3ZTFjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIu
Y3BwCkBAIC0zOTEsNyArMzkxLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogfQogCi1SZWZQdHI8UmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxv
Z2dlcikKK3N0YXRpYyBSZWZQdHI8UmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKIHsK
ICAgICByZXR1cm4gUmVmUHRyPFJlZkxvZ2dlcj4oJmxvZ2dlcik7CiB9CkBAIC00MTUsMTIgKzQx
NSwxMiBAQCBzdHJ1Y3QgQ29uc3RSZWZDb3VudGVkIDogUmVmQ291bnRlZDxDb25zdFJlZkNvdW50
ZWQ+IHsKICAgICBzdGF0aWMgUmVmPENvbnN0UmVmQ291bnRlZD4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb25zdFJlZkNvdW50ZWQpOyB9CiB9OwogCi1jb25zdCBDb25zdFJlZkNv
dW50ZWQmIHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpCitzdGF0aWMgY29uc3QgQ29uc3RSZWZD
b3VudGVkJiByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDb25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOwogICAgIHJldHVybiBpbnN0YW5jZS5n
ZXQoKTsKIH0KLUNvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCitzdGF0aWMg
Q29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3VudGVkUmVmKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q29uc3RSZWZDb3VudGVkPiBpbnN0YW5jZTsKICAgICByZXR1cm4gaW5zdGFu
Y2UuZ2V0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385678</attachid>
            <date>2019-12-13 21:27:51 -0800</date>
            <delta_ts>2019-12-16 12:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205194-20191213212750.patch</filename>
            <type>text/plain</type>
            <size>75153</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDViYzhiNjRiY2JjNzEyYmQ2NDFmNjg1MTBkNmFmMjU2NzhmODA5Li5jZmZhZDMxMWIzN2VjYjgy
Yjg4ZDA1ODM4ZTQyMzYxNDdlZjg0ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQsIGFuZCBpbnN0
ZWFkIHB1dHRpbmcgSW5saW5lV2F0Y2hwb2ludFNldCBkaXJlY3RseSBpbnRvIEFycmF5QnVmZmVy
LCBzaW5jZSB0aGlzIGlzIG11Y2ggc2ltcGxlci4KKyAgICAgICAgVGhlIG1haW4gcmVhc29uIHdo
eSB3ZSBhcmUgdXNpbmcgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGlzIG5vdCB0
byBpbmNyZWFzZSBzaXplb2YoQXJyYXlCdWZmZXIpLiBCdXQgdGhpcyBjb21wbGljYXRlcyB0aGUg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIFNvLCBub3QgdG8gaW5jcmVhc2Ugc2l6ZW9mKEFycmF5
QnVmZmVyKSwgd2UgdXNlIFBhY2tlZFJlZlB0ciBpbiBBcnJheUJ1ZmZlciwgd2hpY2ggaXMgUmVm
UHRyIHdoaWxlIHRoZSBwb2ludGVyIGlzIHBhY2tlZC4gVGhpcyBnaXZlcyB1cyA4IGJ5dGVzIHdo
aWNoIGlzCisgICAgICAgIHN1aXRhYmxlIGZvciBwbGFjaW5nIElubGluZVdhdGNocG9pbnRTZXQg
d2l0aG91dCBpbmNyZWFzaW5nIHNpemVvZihBcnJheUJ1ZmZlcikuIFdlIGFsc28gY29udmVydCBG
dW5jdGlvbjw+IGluIEFycmF5QnVmZmVyIHRvIFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPD4+LAor
ICAgICAgICBhbmQgc2hhcmUgR2lnYWNhZ2U6OmZyZWUgZGVzdHJ1Y3RvciBieSBtdWx0aXBsZSBB
cnJheUJ1ZmZlci4gVGhpcyBpcyBtZW1vcnkgZWZmaWNpZW50IHNpbmNlIHRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLCBhbmQgd2UgY2FuIHBhY2sgdGhpcyBmaWVsZCBlYXNpbHkuCisKKyAgICAgICAg
KiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlX
aXRoQnl0ZXNOb0NvcHkpOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRX
YXRjaHBvaW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hw
b2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHM6On5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50czo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjptYWtlU2hhcmVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
dHJhbnNmZXJUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpuZXV0ZXIpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6Om5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50
aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcDoKKyAgICAgICAgKEpTQzo6RmlsZUJhc2VkRnV6
emVyQWdlbnQ6OmdldFByZWRpY3Rpb25JbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9GaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpGaWxlQmFzZWRGdXp6ZXJB
Z2VudEJhc2U6OmNyZWF0ZUxvb2t1cEtleSk6CisgICAgICAgICogcnVudGltZS9QcmVkaWN0aW9u
RmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwOgorICAgICAgICAoSlNDOjpQcmVkaWN0aW9uRmls
ZUNyZWF0aW5nRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb25JbnRlcm5hbCk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHA6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmJ1ZmZlcik6CisKIDIwMTktMTItMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUg
SlNGaXhlZEFycmF5LCBhbmQgdXNlIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGluc3RlYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NGJhOGUwYTdiMTc0NjAxMDc3ZTY1M2JmZWZmZGExZWU0MzhiNGNhZC4uMDVmMzk5NDQ4YjVlODVl
MDE5OThiZjVmYjU5Nzg1YmU3OGEzNmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0xMi0x
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJl
bW92ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTE5NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYWNrZWRSZWYg
YW5kIFBhY2tlZFJlZlB0ci4gVGhleSBhcmUgUmVmIGFuZCBSZWZQdHIsIGJ1dCBpdHMgaW50ZXJu
YWwgcG9pbnRlciBpcyBwYWNrZWQuCisgICAgICAgIFNvIHdlIGNhbiByZXByZXNlbnQgdGhlbSBp
biA2IGJ5dGVzIHdpdGggMSBieXRlIGFsaWdubWVudC4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OmFsaWdub2YpOgorICAgICAgICAqIHd0
Zi9QYWNrZWRSZWYuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmguCisgICAgICAgICogd3RmL1BhY2tl
ZFJlZlB0ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmguCisgICAgICAgICogd3RmL1JlZlB0ci5o
OgorICAgICAgICAoV1RGOjpSZWZQdHI6Om9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUgY29u
c3QpOgorICAgICAgICAoV1RGOjpSZWZQdHI6OnVuc3BlY2lmaWVkQm9vbFR5cGVJbnN0YW5jZSBj
b25zdCk6CisKIDIwMTktMTItMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGEgSGVhcDo6ZmluYWxpemUgZnVuY3Rpb24gdGhhdCB0YWtlcyBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NjZkMGQxYTE1YTgxZmY2MTU1MmVmOTVmMTcz
NWZmZWZjNzQ5YWU3Li42NWEyNWIwMzljOGFlMTNiNzU2MGM0YzEyMGMwNzU2MGEwMGVlYWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTItMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDUxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorCiAyMDE5LTEyLTEz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBT
Y3JpcHRDb250cm9sbGVyJ3MgcHJvbGlmZXJhdGlvbiBvZiBFeGNlcHRpb25EZXRhaWxzKi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAppbmRleCBlYjlkYzMwNmI0
NGZmMzUwMWZmNjQ5ZDI5ZmZlMTI5NDEyMmQ4NWJjLi40NjAzNWE5ZDE2YmQ5ZTM1NTk1YWNhZDhi
ZTcyMzNhZmNlMzMxMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJy
YXkuY3BwCkBAIC0xODQsMTAgKzE4NCwxMCBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBl
ZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheQogCiAg
ICAgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFycmF5VHlw
ZShhcnJheVR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZy
b21CeXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIGF1dG8gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBjcmVhdGVTaGFyZWRU
YXNrPHZvaWQodm9pZCopPihbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3RvcikK
ICAgICAgICAgICAgIGRlc3RydWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwotICAgIH0pOwor
ICAgIH0pKTsKICAgICBKU09iamVjdCogcmVzdWx0ID0gY3JlYXRlVHlwZWRBcnJheShnbG9iYWxP
YmplY3QsIGFycmF5VHlwZSwgV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGggLyBlbGVtZW50Qnl0
ZVNpemUpOwogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMzEyLDEwICszMTIsMTAgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlC
dWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMKICAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0
ZXMoYnl0ZXMsIGJ5dGVMZW5ndGgsIFs9XSh2b2lkKiBwKSB7CisgICAgYXV0byBidWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBieXRlTGVuZ3RoLCBjcmVhdGVTaGFy
ZWRUYXNrPHZvaWQodm9pZCopPihbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoYnl0ZXNEZWFs
bG9jYXRvcikKICAgICAgICAgICAgIGJ5dGVzRGVhbGxvY2F0b3IocCwgZGVhbGxvY2F0b3JDb250
ZXh0KTsKLSAgICB9KTsKKyAgICB9KSk7CiAKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9
IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVj
dHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgV1RGTW92ZShidWZmZXIpKTsK
ICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9
PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkOTk2YzFlNGJkNjE2NTVjMmM5MTU5MjIyZTBiNGViZWU0ZTE3MDdmLi5kYmNlNWJhY2Vk
YzA1YzNkYzBlYThiMDQzMzQ2ZDE1MWQwZGVmNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNzUyLDcgKzc1Miw2IEBACiAJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBO
b2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkM5MjE2
MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAv
KiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLzsgfTsKIAkJMEZGQzk5RDExODRFQzhBRDAwOUMxMEFC
IC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRkM5OUQ1MTg0
RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQzMTg0RUUz
MTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZGQzk1ODE0RUY5
MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oICovOyB9OwogCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRFMTRF
RjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oICovOyB9OwogCQkwRkZGQzk1QzE0RUY5MEFG
MDBDNzI1MzIgLyogREZHUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRkZDOTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovOyB9
OwpAQCAtMzI1Miw4ICszMjUxLDYgQEAKIAkJMEZGQjgwQkIyMEE3OTQ3MDAwMDZBQUY2IC8qIEpJ
VENvZGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGVJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkM5MjE1MUI5NEZCM0Uw
MDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHUHJvcGVydHlUeXBlS2V5Lmg7IHBhdGggPSBkZmcvREZHUHJvcGVydHlUeXBl
S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkM5OUQwMTg0RUM4QUQwMDlD
MTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc3RhbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkM5OUQyMTg0
RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGQzk5RDMx
ODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk0MCw4ICs2
OTM3LDYgQEAKIAkJCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICov
LAogCQkJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAotCQkJ
CTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnRTZXQuY3BwICovLAotCQkJCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCAqLywKIAkJCQkwRjMwRkI2MDFEQzJERTk2MDAzMTI0
RjIgLyogQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oICovLAogCQkJCUE3QThBRjI3MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwICovLAogCQkJCUE3QThBRjI4MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLywKQEAgLTg4ODMsNyArODg3OCw2IEBACiAJ
CQkJODZBREQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFy
cmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIg
LyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMwRkI2MTFEQzJERTk5MDAzMTI0RjIgLyogQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFy
cmF5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDE4MThiZjdlZTAzYzVkNjUzOTcwZjVjNDQ1MWJhYzUxOTNjNmQ0ZDguLjQ3YjBjYTdh
OTViMGIxYzRmMjk0ZDY4ZjE2ZWQxYjUyNDFiZjFhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKQEAgLTcwMyw3ICs3MDMsNiBAQCBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIHJ1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCiBydW50aW1lL0FyZ0xpc3QuY3BwCiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcAotcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQuY3BwCiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5jcHAKIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCBjMjQzMWYw
M2ZjZTk2N2MyZjZhN2VlNDBhYmYzZDU2MTU1NDYzM2JlLi4wN2JhYmU3M2I0ZGU5NWY2ODZmY2Qw
YzJiOTBmYzI1M2I5N2Q1YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dC5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMzgsMTkgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFk
ZCgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcsIENv
bW1vbkRhdGEmIGNvbW1vbikKIHsKLSAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7CisgICAg
Ly8gdmlldyBpcyBhbHJlYWR5IGZyb3plbi4gSWYgaXQgaXMgZGVhbGxvY2F0ZWQsIGpldHRpc29u
aW5nIGhhcHBlbnMuCiAgICAgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50KiB3YXRjaHBv
aW50ID0gbnVsbHB0cjsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9p
bnRzLmFkZChjb2RlQmxvY2spOwogICAgIH0KLSAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQqIG5ldXRlcmluZ1dhdGNocG9pbnQgPQotICAgICAgICBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZSh2bSk7Ci0gICAgbmV1dGVyaW5nV2F0Y2hwb2ludC0+
c2V0KCkuYWRkKFdURk1vdmUod2F0Y2hwb2ludCkpOwotICAgIGNvZGVCbG9jay0+YWRkQ29uc3Rh
bnQoQ29uY3VycmVudEpTTG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKSwgbmV1dGVyaW5nV2F0Y2hw
b2ludCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdmlldy0+cG9zc2libHlTaGFy
ZWRCdWZmZXIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChhcnJheUJ1ZmZlcik7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0IHRoaXMgd2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJl
ZCBidWZmZXJzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQxMDgKLSAgICB2bS5oZWFwLmFkZFJlZmVyZW5jZShuZXV0ZXJpbmdXYXRjaHBvaW50LCB2
aWV3LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpKTsKKyAgICBhcnJheUJ1ZmZlci0+bmV1dGVyaW5n
V2F0Y2hwb2ludFNldCgpLmFkZChXVEZNb3ZlKHdhdGNocG9pbnQpKTsKIH0KIAogdm9pZCBTeW1i
b2xUYWJsZUFkYXB0b3I6OmFkZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAK
aW5kZXggNzk2NDk4NTMzMTYwM2MzOGJiYWVjZTQzYjQ3YThiYTA4NzliZDg3MC4uYjMyMGY3MDdj
OTVmMTIzOTM4NTFiYzNiMmIyYjQyYjk1NmRkMGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKQEAgLTEzOTksNiArMTM5OSw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3KiBH
cmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKCF2aWV3LT5s
ZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNl
KCk7CisgICAgZnJlZXplKHZpZXcpOwogICAgIHdhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHZpZXcp
OwogICAgIHJldHVybiB2aWV3OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuY3BwCmluZGV4IDA3YmRhMzhhNmUyMjhhZmRkMDQxYjIxODYwYzdhZjQyMzEy
MzM0NzUuLjE4OWI0YWM0NTRhZWE2OThiOTJiNGYwMzljY2JjOTMwYzEyNGFiYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTI2LDEzICsy
NiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAK
LSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvR2lnYWNhZ2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK1JlZjxTaGFyZWRUYXNrPHZv
aWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCit7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQq
KT4+PiBkZXN0cnVjdG9yOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGRlc3RydWN0b3IuY29uc3Ry
dWN0KGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtdICh2b2lkKiBwKSB7IEdpZ2FjYWdl
OjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHApOyB9KSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGRlc3RydWN0b3IuZ2V0KCkuY29weVJlZigpOworfQorCiBTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0
YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCkBA
IC00Miw4ICs1MSwxMCBAQCBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsCiAKIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHM6On5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCkKIHsKLSAgICAvLyBGSVhN
RTogd2Ugc2hvdWxkbid0IHVzZSBnZXRVbnNhZmUgaGVyZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Njk4Ci0gICAgbV9kZXN0cnVjdG9yKG1fZGF0YS5nZXRVbnNh
ZmUoKSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvcikgeworICAgICAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkbid0IHVzZSBnZXRVbnNhZmUgaGVyZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk3Njk4CisgICAgICAgIG1fZGVzdHJ1Y3Rvci0+cnVuKG1fZGF0YS5nZXRVbnNh
ZmUoKSk7CisgICAgfQogfQogCiBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRl
bnRzKCkKQEAgLTg0LDE1ICs5NSwxNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OmNsZWFy
KCkKIAogdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpkZXN0cm95KCkKIHsKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IHVzZSBnZXRVbnNhZmUgaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzY5OAotICAgIG1fZGVzdHJ1Y3RvcihtX2RhdGEuZ2V0VW5z
YWZlKCkpOworICAgIGlmIChtX2Rlc3RydWN0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCB1c2UgZ2V0VW5zYWZlIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTc2OTgKKyAgICAgICAgbV9kZXN0cnVjdG9yLT5ydW4obV9kYXRhLmdldFVu
c2FmZSgpKTsKKyAgICB9CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQog
ewotICAgIG1fZGVzdHJ1Y3RvciA9IFtdICh2b2lkKikgeyB9OwotICAgIG1fc2hhcmVkID0gbnVs
bHB0cjsKICAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGVzdHJ1Y3RvciA9IG51bGxwdHI7
CisgICAgbV9zaGFyZWQgPSBudWxscHRyOwogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCkBA
IC0xMjMsMTMgKzEzNiwxMyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQogCiAgICAgbV9zaXpl
SW5CeXRlcyA9IHNpemVJbkJ5dGVzOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMg
PD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKLSAgICBtX2Rlc3RydWN0b3IgPSBbXSAodm9pZCog
cCkgeyBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwKTsgfTsKKyAgICBtX2Rl
c3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9
CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6bWFrZVNoYXJlZCgpCiB7CiAgICAgbV9zaGFy
ZWQgPSBhZG9wdFJlZihuZXcgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyhkYXRhKCksIHNpemVJ
bkJ5dGVzKCksIFdURk1vdmUobV9kZXN0cnVjdG9yKSkpOwotICAgIG1fZGVzdHJ1Y3RvciA9IFtd
ICh2b2lkKikgeyB9OworICAgIG1fZGVzdHJ1Y3RvciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXJy
YXlCdWZmZXJDb250ZW50czo6dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikK
QEAgLTE1OCw5ICsxNzEsOSBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKIHsKICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7
CiAgICAgQVNTRVJUKG1fc2hhcmVkKTsKLSAgICBvdGhlci5tX2Rlc3RydWN0b3IgPSBbXSAodm9p
ZCopIHsgfTsKLSAgICBvdGhlci5tX3NoYXJlZCA9IG1fc2hhcmVkOwogICAgIG90aGVyLm1fZGF0
YSA9IG1fZGF0YTsKKyAgICBvdGhlci5tX2Rlc3RydWN0b3IgPSBudWxscHRyOworICAgIG90aGVy
Lm1fc2hhcmVkID0gbV9zaGFyZWQ7CiAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUlu
Qnl0ZXM7CiAgICAgUkVMRUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpOwogfQpAQCAtMTk3LDcgKzIxMCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyAg
IGZyb20gdGhlIGNhZ2UuCiBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9w
dGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBbXSAodm9pZCogcCkgeyBHaWdhY2Fn
ZTo6ZnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwKTsgfSk7CisgICAgcmV0dXJuIGNyZWF0ZUZy
b21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VE
ZXN0cnVjdG9yKCkpOwogfQogCiAvLyBGSVhNRTogV2UgY2Fubm90IHVzZSB0aGlzIGV4Y2VwdCBp
ZiB0aGUgbWVtb3J5IGNvbWVzIGZyb20gdGhlIGNhZ2UuCkBAIC0zNzEsNiArMzg0LDcgQEAgYm9v
bCBBcnJheUJ1ZmZlcjo6dHJhbnNmZXJUbyhWTSYgdm0sIEFycmF5QnVmZmVyQ29udGVudHMmIHJl
c3VsdCkKIAogICAgIG1fY29udGVudHMudHJhbnNmZXJUbyhyZXN1bHQpOwogICAgIG5vdGlmeUlu
Y29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKHZtKTsKKyAgICBtX25ldXRlcmluZ1dhdGNocG9p
bnRTZXQuZmlyZUFsbCh2bSwgIkFycmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzgxLDYgKzM5NSw3IEBAIHZvaWQgQXJyYXlCdWZmZXI6Om5ldXRl
cihWTSYgdm0pCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyB1bnVzZWQ7CiAgICAgbV9jb250ZW50
cy50cmFuc2ZlclRvKHVudXNlZCk7CiAgICAgbm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJh
bnNmZXIodm0pOworICAgIG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldC5maXJlQWxsKHZtLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpub3RpZnlJ
bmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYgdm0pCkBAIC0zODksOCArNDA0LDYgQEAg
dm9pZCBBcnJheUJ1ZmZlcjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIoVk0m
IHZtKQogICAgICAgICBKU0NlbGwqIGNlbGwgPSBpbmNvbWluZ1JlZmVyZW5jZUF0KGkpOwogICAg
ICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4odm0sIGNlbGwpKQogICAgICAgICAgICAgdmlldy0+bmV1dGVyKCk7Ci0gICAg
ICAgIGVsc2UgaWYgKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogd2F0Y2hwb2lu
dCA9IGpzRHluYW1pY0Nhc3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4odm0s
IGNlbGwpKQotICAgICAgICAgICAgd2F0Y2hwb2ludC0+ZmlyZUFsbCgpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZTZmNTVj
ZTBiZDk4OWRmYjE1ZDY2NDJkNmY4YWI1YzNiZjQ1MmZkOS4uOWE2NTg1ZmY1YmEyNjRlM2M1ZjA1
MTUzYTNiNTdiNTc1OWZjZmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCkBAIC0yNywxMCArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVy
U2hhcmluZ01vZGUuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZC5oIgorI2luY2x1
ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2Vk
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9TaGFyZWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtNDQsNyArNDYsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5QnVm
ZmVyVmlldzsKIGNsYXNzIEpTQXJyYXlCdWZmZXI7CiAKLXR5cGVkZWYgRnVuY3Rpb248dm9pZCh2
b2lkKik+IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uOwordXNpbmcgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24gPSBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+OwordXNp
bmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4+OwogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRz
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+
IHsKIHB1YmxpYzoKQEAgLTU2LDcgKzU5LDcgQEAgY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckMKIHBy
aXZhdGU6CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZl
LCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwotICAgIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKKyAgICBQYWNrZWRBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgdW5zaWduZWQgbV9zaXplSW5C
eXRlczsKIH07CiAKQEAgLTk4LDEwICsxMDEsMTAgQEAgY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50
cyB7CiAgICAgdm9pZCBjb3B5VG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwogICAgIHZvaWQgc2hh
cmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmKTsKIAotICAgIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICBSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cz4gbV9zaGFyZWQ7CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6
UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOworICAg
IFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKKyAgICBQ
YWNrZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7CiAgICAgdW5z
aWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKQEAgLTE0OCwxMSArMTUxLDE0IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAK
ICAgICB2b2lkIG5ldXRlcihWTSYpOwogICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFt
X2NvbnRlbnRzLm1fZGF0YTsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG5ldXRlcmluZ1dh
dGNocG9pbnRTZXQoKSB7IHJldHVybiBtX25ldXRlcmluZ1dhdGNocG9pbnRTZXQ7IH0KIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEFycmF5QnVmZmVyLCBtX2NvbnRlbnRzKSArIE9CSkVDVF9PRkZTRVRPRihBcnJheUJ1ZmZlckNv
bnRlbnRzLCBtX2RhdGEpOyB9CiAKICAgICB+QXJyYXlCdWZmZXIoKSB7IH0KIAorICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYm
LCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwpAQCAtMTY1LDE0ICsxNzEsMTUgQEAgY2xhc3MgQXJy
YXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAg
ICB2b2lkIG5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKFZNJik7CiAKICAgICBB
cnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCBt
X25ldXRlcmluZ1dhdGNocG9pbnRTZXQgeyBJc1dhdGNoZWQgfTsKK3B1YmxpYzoKKyAgICBXZWFr
PEpTQXJyYXlCdWZmZXI+IG1fd3JhcHBlcjsKK3ByaXZhdGU6CiAgICAgQ2hlY2tlZDx1bnNpZ25l
ZD4gbV9waW5Db3VudDsKICAgICBib29sIG1faXNXYXNtTWVtb3J5OwogICAgIC8vIG1fbG9ja2Vk
ID09IHRydWUgbWVhbnMgdGhhdCBzb21lIEFQSSB1c2VyIGZldGNoZWQgbV9jb250ZW50cyBkaXJl
Y3RseSBmcm9tIGEgVHlwZWRBcnJheSBvYmplY3QsCiAgICAgLy8gdGhlIGJ1ZmZlciBpcyBiYWNr
ZWQgYnkgYSBXZWJBc3NlbWJseS5NZW1vcnksIG9yIGlzIGEgU2hhcmVkQXJyYXlCdWZmZXIuCiAg
ICAgYm9vbCBtX2xvY2tlZDsKLQotcHVibGljOgotICAgIFdlYWs8SlNBcnJheUJ1ZmZlcj4gbV93
cmFwcGVyOwogfTsKIAogdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiMTZk
ODEyYTRiYzU3YzhjZWYzYWI3YWNhN2QzMzhjNWMwYzkzYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0LmgiCi0KLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0OjpzX2luZm8gPSB7Ci0gICAgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQpCi19OwotCi1BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldChWTSYgdm0p
Ci0gICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1
cmUuZ2V0KCkpCi0gICAgLCBtX3NldChhZG9wdFJlZigqbmV3IFdhdGNocG9pbnRTZXQoSXNXYXRj
aGVkKSkpCi17Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQqPihjZWxsKS0+QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0Ojp+QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KCk7Ci19Ci0KLUFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0OjpjcmVhdGUoVk0mIHZtKQotewotICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldCogcmVzdWx0ID0gbmV3Ci0gICAgICAgIChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Pih2bS5oZWFwKSkKLSAgICAgICAgQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KHZtKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1TdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKLXsKLSAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIGpzTnVsbCgpLCBUeXBlSW5mbyhDZWxsVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi12b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldDo6ZmlyZUFsbCgpCi17Ci0gICAgbV9zZXQtPmZpcmVBbGwodm0oKSwgIkFy
cmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRjNzM3Y2NlNThjMWM5N2QxMTVhNjA5Y2RiMzBkMDExMTk0MTIzZWEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0Nhc3QuaCIKLSNpbmNs
dWRlICJXYXRjaHBvaW50LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgCi0gICAgc3RhdGljIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldCogY3JlYXRlKFZNJik7Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKLSAgICAKLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
KTsKLSAgICAKLSAgICBXYXRjaHBvaW50U2V0JiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsg
fQotICAgIAotICAgIHZvaWQgZmlyZUFsbCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldChWTSYpOwotICAgIAotICAgIFJlZjxXYXRj
aHBvaW50U2V0PiBtX3NldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwCmlu
ZGV4IGE3Y2Q0YzFjMjQ3MzZhMmU1YWE2ZjA3OTRhYTNhODI4YzdiOGFjM2MuLmNmNTQ1MDcyNjkz
NTZjN2EyZjQ4NDlhOTA2YzY4ZDNlYzI0ZmVkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAKQEAgLTEwMCw3ICsx
MDAsNyBAQCBTcGVjdWxhdGVkVHlwZSBGaWxlQmFzZWRGdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlv
bkludGVybmFsKENvZGVCbG9jayogY29kZUJsb2NrLAogICAgICAgICBicmVhazsKIAogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgi
VW5oYW5kbGVkIG9wY29kZSAlcyIsIHRvU3RyaW5nKHRhcmdldC5vcGNvZGVJZCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgi
VW5oYW5kbGVkIG9wY29kZSAlcyIsIG9wY29kZU5hbWVzW3RhcmdldC5vcGNvZGVJZF0pOwogICAg
IH0KICAgICBpZiAoIWdlbmVyYXRlZCkgewogICAgICAgICBpZiAoT3B0aW9uczo6ZHVtcEZ1enpl
ckFnZW50UHJlZGljdGlvbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCmluZGV4IDQ3MTgwOTdkNGU1
MWY0YWNjNDhkZDkwYjBiNTJmYzI4ODgyOTZjNWIuLmI3MTEyZTE1M2UyYjEzZjVkZTg4OGYyOTBk
NDczNzI0ZmIzNjk5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBT
dHJpbmcgRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlOjpjcmVhdGVMb29rdXBLZXkoY29uc3QgU3Ry
aW5nJiBzb3VyY2VGaWxlbmFtZSwgTwogICAgIFN0cmluZ0J1aWxkZXIgbG9va3VwS2V5OwogICAg
IGxvb2t1cEtleS5hcHBlbmQoc291cmNlRmlsZW5hbWUpOwogICAgIGxvb2t1cEtleS5hcHBlbmQo
InwiKTsKLSAgICBsb29rdXBLZXkuYXBwZW5kKHRvU3RyaW5nKG9wY29kZUFsaWFzRm9yTG9va3Vw
S2V5KG9wY29kZUlkKSkpOworICAgIGxvb2t1cEtleS5hcHBlbmQob3Bjb2RlTmFtZXNbb3Bjb2Rl
QWxpYXNGb3JMb29rdXBLZXkob3Bjb2RlSWQpXSk7CiAgICAgbG9va3VwS2V5LmFwcGVuZCgifCIp
OwogICAgIGxvb2t1cEtleS5hcHBlbmQoc3RhcnRMb2NhdGlvbik7CiAgICAgbG9va3VwS2V5LmFw
cGVuZCgifCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJl
ZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKaW5kZXggMTI3
YzMyYjQ2YzdjMzliOGVlMzIwMjdjNzM1ZDRjMDY1NWNiNDkwMS4uYTVhMGE4M2M3OTg1ZWUyNmQz
YTQ5M2Y2NmZlYjc0NTZkYTAxYTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFNwZWN1bGF0ZWRUeXBlIFByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbkludGVybmFsKENvZGVCbG9jCiAgICAgICAg
IGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKGZhbHNlLCAidW5oYW5kbGVkIG9wY29kZTogJXMiLCB0b1N0cmluZyhwcmVkaWN0aW9uVGFy
Z2V0Lm9wY29kZUlkKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKGZhbHNlLCAidW5oYW5kbGVkIG9wY29kZTogJXMiLCBvcGNvZGVOYW1lc1twcmVk
aWN0aW9uVGFyZ2V0Lm9wY29kZUlkXSk7CiAgICAgfQogICAgIHJldHVybiBvcmlnaW5hbDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5ZDU0ZmRjZDg0NzNkNzIzZmJh
ZWNhNTEzNDkwNjFkOTUyMDI0YjkxLi4xOThjMGU1MTEzZWZiZGI0NGVjYmY1NWU3ZDY2ZGIxY2E5
Mzk3NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiVk0uaCIKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJCaWdJbnRPYmpl
Y3QuaCIKICNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1
dGFibGVzLmgiCkBAIC00NjQsNyArNDYzLDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhpcywgU3Ry
dWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBz
cGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJyYXlWYWx1ZU1h
cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgYXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMpKTsKICAgICB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5s
aW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJs
b2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBlOWE5MGYwOTBhZjVhYThmOGEzYjE3M2YyMTRlYmVhMjM2YTM5
ZDQwLi45ZDljZWZkMjQ4YzE0NTk3NTg4MjA1OTI3MDEyMmIyYjNlNjU4ZTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY2Nyw3ICs2NjcsNiBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gdGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3RydWN0dXJlOwotICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmNwcAppbmRleCAzZjhiZTM2ZWY2ZmIwMWM2ZDcwZDczZTgzM2RmMjY1MTRjNTEwOWFh
Li4xM2M2MmY2ODM0MDY2N2E3NDE4NWU4OGFmYmM3ODliYjdmNzAyYzNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcApA
QCAtNzksNyArNzksNyBAQCBKU0FycmF5QnVmZmVyKiBKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZm
ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgLy8gV2UgY2Fu
J3QgdXNlIGEgcmVmIGhlcmUgc2luY2UgaXQgZG9lc24ndCBoYXZlIGEgY29weSBjb25zdHJ1Y3Rv
ci4uLgogICAgIFJlZjxXYXNtOjpNZW1vcnk+IHByb3RlY3RlZE1lbW9yeSA9IG1fbWVtb3J5Lmdl
dCgpOwotICAgIGF1dG8gZGVzdHJ1Y3RvciA9IFtwcm90ZWN0ZWRNZW1vcnkgPSBXVEZNb3ZlKHBy
b3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9OworICAgIGF1dG8gZGVzdHJ1Y3RvciA9IGNyZWF0
ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtwcm90ZWN0ZWRNZW1vcnkgPSBXVEZNb3ZlKHByb3Rl
Y3RlZE1lbW9yeSldICh2b2lkKikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGVGcm9tQnl0ZXMobWVtb3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwgV1RGTW92
ZShkZXN0cnVjdG9yKSk7CiAgICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7CiAgICAgbV9i
dWZmZXJXcmFwcGVyLnNldCh2bSwgdGhpcywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpLCBtX2J1ZmZlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOGU4ZWMxNTlhNzE0NGY2MWFkNTgwZTU2MDVlYzQyN2U2OWMzOTg4ZS4u
NWJkN2FiNDNkZTA2Zjg5M2MxNjRkNTk5YzZjYzRmNWZiMTdiMDViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzMsNiArNjczLDggQEAKIAkJRTM0Q0Qw
RDAyMjgxMEEwMjAwMjBEMjk5IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8q
IFVuYWxpZ25lZEFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmFs
aWduZWRBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjUyMTI3
Qjg1QzAwQzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY4OTVD
QjIzQTQ0NUNEMDA4REQ0QzggLyogUGFja2VkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZFJl
Zi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY4OTVDQzIzQTQ0NUVFMDA4REQ0
QzggLyogUGFja2VkUmVmUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZFJlZlB0ci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29y
a2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQ
b29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkUyMEM5MDk1MTAw
RTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNDFFQjRF
MDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENQVVRpbWVDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDc3LDYgKzEwNzksOCBAQAogCQkJCUE4QTQ3MkRCMTUxQTgyNUIwMDQxMjNGRiAvKiBP
U1JhbmRvbVNvdXJjZS5oICovLAogCQkJCUUzNENEMEQwMjI4MTBBMDIwMDIwRDI5OSAvKiBQYWNr
ZWQuaCAqLywKIAkJCQlBOEE0NzJERjE1MUE4MjVCMDA0MTIzRkYgLyogUGFja2VkSW50VmVjdG9y
LmggKi8sCisJCQkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5oICovLAor
CQkJCUUzNjg5NUNDMjNBNDQ1RUUwMDhERDRDOCAvKiBQYWNrZWRSZWZQdHIuaCAqLywKIAkJCQlB
OEE0NzJFMDE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUFsbG9jYXRpb24uaCAqLywKIAkJCQlBOEE0
NzJFMzE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCAqLywKIAkJCQlBOEE0NzJFNDE1
MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4
IGFmY2M2MGUyMjAzMjVjYjEwOWZlZDlhZWY0ODFiZDljOTZmMzhmZjUuLmRhZTRhNzFiMjhkMTMw
NDI0YzBiZDczMWJlNDE2NDNmMDUyYjNlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNTUs
NiArMTU1LDggQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIE9wdGlvbmFsLmgKICAgICBP
cmRlck1ha2VyLmgKICAgICBQYWNrZWQuaAorICAgIFBhY2tlZFJlZi5oCisgICAgUGFja2VkUmVm
UHRyLmgKICAgICBQYWNrZWRJbnRWZWN0b3IuaAogICAgIFBhZ2VBbGxvY2F0aW9uLmgKICAgICBQ
YWdlQmxvY2suaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFja2VkLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QYWNrZWQuaAppbmRleCA4MzlkM2M4NzMxNWU1MDEwOGJjOTcxODA2Y2E5NDU5OGMz
MTAzOWViLi5iMjJmYzc2MWQ0Mjk3NGI5ODEyNWJiN2U3ZDFjMmQxZjlhNTc4MzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQu
aApAQCAtMTYzLDYgKzE2MywxMCBAQCBjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKICAgICBUKiBv
cGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KICAgICBUJiBvcGVyYXRvciooKSBj
b25zdCB7IHJldHVybiAqZ2V0KCk7IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBp
bXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVz
LgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFsaWduZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBl
KTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0
KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9zdG9yYWdlIDogbnVsbHB0cjsgfQogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQogCiAgICAgUGFja2Vk
QWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZhbHVlKQpAQCAtMTcyLDkgKzE3Niw5IEBAIGNsYXNz
IFBhY2tlZEFsaWduZWRQdHIgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAg
VCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQog
ICAgIHsKLSAgICAgICAgVCBvbGRWYWx1ZSA9IGdldCgpOworICAgICAgICBUKiBvbGRWYWx1ZSA9
IGdldCgpOwogICAgICAgICBzZXQoc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7CiAgICAgICAg
IHJldHVybiBvbGRWYWx1ZTsKICAgICB9CkBAIC0xODksMTUgKzE5MywxNSBAQCBjbGFzcyBQYWNr
ZWRBbGlnbmVkUHRyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5cGU+PgogICAgIHZvaWQgc3dhcChPdGhl
ciYgb3RoZXIpCiAgICAgewotICAgICAgICBUIHQxID0gZ2V0KCk7Ci0gICAgICAgIFQgdDIgPSBv
dGhlci5nZXQoKTsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDIgPSBvdGhl
ci5nZXQoKTsKICAgICAgICAgc2V0KHQyKTsKICAgICAgICAgb3RoZXIuc2V0KHQxKTsKICAgICB9
CiAKLSAgICB2b2lkIHN3YXAoVCYgdDIpCisgICAgdm9pZCBzd2FwKFQqIHQyKQogICAgIHsKLSAg
ICAgICAgVCB0MSA9IGdldCgpOworICAgICAgICBUKiB0MSA9IGdldCgpOwogICAgICAgICBzdGQ6
OnN3YXAodDEsIHQyKTsKICAgICAgICAgc2V0KHQxKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QYWNrZWRSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1BhY2tlZFJlZi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE0ZWNkZmY4ZDc2ZTM3YzdmMzlmYjhhZDlkODc3YzY5MDUzNDIxZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWYuaApAQCAtMCwwICsxLDM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFBhY2tlZFJlZiA9IFJl
ZjxULCBQYWNrZWRQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpQYWNrZWRSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWRSZWZQdHIu
aCBiL1NvdXJjZS9XVEYvd3RmL1BhY2tlZFJlZlB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNDdkN2RmYjY1
N2ZlYTNlZTc2MDNmMDcyMjc0MjY3NTBkNzZkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QYWNrZWRSZWZQdHIuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFBhY2tlZFJlZlB0ciA9IFJlZlB0cjxULCBQ
YWNrZWRQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpQ
YWNrZWRSZWZQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ci5oCmluZGV4IDViZWM2YzdlZTIwZTg2NzIzNTI3OTMwNzI4ZThjZjE4
M2RiOWI0OGIuLjZkNGM2NDQ0ZTdlYWYxYWExZWFhZjQzMjlhNWY2OThmMDkzZWQwYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0
ci5oCkBAIC04MSw4ICs4MSw4IEBAIGNsYXNzIFJlZlB0ciB7CiAgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KIAogICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVy
YXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIg
aW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQqIChSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xU
eXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9wdHIgPyAmUmVmUHRyOjptX3B0ciA6IG51bGxwdHI7IH0KKyAgICB1c2luZyBVbnNwZWNpZmll
ZEJvb2xUeXBlID0gdm9pZCAoUmVmUHRyOjoqKSgpIGNvbnN0OworICAgIG9wZXJhdG9yIFVuc3Bl
Y2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZSZWZQdHI6OnVuc3BlY2lm
aWVkQm9vbFR5cGVJbnN0YW5jZSA6IG51bGxwdHI7IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9CiAgICAgCkBAIC0xMDIsNiArMTAyLDgg
QEAgY2xhc3MgUmVmUHRyIHsKICAgICBSZWZQdHIgY29weVJlZigpIGNvbnN0ICYgV0FSTl9VTlVT
RURfUkVUVVJOIHsgcmV0dXJuIFJlZlB0cihtX3B0cik7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lk
IHVuc3BlY2lmaWVkQm9vbFR5cGVJbnN0YW5jZSgpIGNvbnN0IHsgfQorCiAgICAgZnJpZW5kIFJl
ZlB0ciBhZG9wdFJlZjxULCBQdHJUcmFpdHM+KFQqKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBY
LCB0eXBlbmFtZSBZPiBmcmllbmQgY2xhc3MgUmVmUHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGU1Njk2Mjg4MmRm
MzcyZDA0YmM2ZDgzMWFmYWQxYjFiZjI1MTQ3NGYuLmE0YjlmNjZkMGU4N2QwMjEzMjBlMzQ2OTM2
MDZmMDQzZjg1M2U3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNzAsMTQgKzE3MCwxMSBAQCBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgYXV0byBidWZm
ZXIgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJ1ZmZlclNpemUp
OwotICAgICAgICBhdXRvIGRlc3RydWN0b3IgPSBbXSAodm9pZCogcHRyKSB7Ci0gICAgICAgICAg
ICBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIpOwotICAgICAgICB9Owog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihidWZmZXIpLCBidWZmZXJTaXplLCAxKSkgewotICAgICAgICAgICAgZGVzdHJ1Y3Rv
cihidWZmZXIpOworICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgYnVmZmVyKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAg
ICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXpl
LCBXVEZNb3ZlKGRlc3RydWN0b3IpIH0pOworICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXktPmFwcGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3RvcigpIH0pOwogICAgIH0KIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGFycmF5QnVmZmVy
Q29udGVudHNBcnJheSkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA4N2M3MjI1NTQ3MjhiMDQ1MjRmNmI0MjNmYzAxZDFhNWMwNzAzYmY1Li5h
YzlkMWY4ODQ2NjcxODkzZTU0NGFkODM1ZWQxYTI1ZDgyNjk2YTliIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTkt
MTItMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlND
XSBSZW1vdmUgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxOTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFBhY2tlZFJl
ZiBhbmQgUGFja2VkUmVmUHRyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRS
ZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6cGFzc1dpdGhSZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFj
a2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpyZWYpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OmRlcmVm
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxv
Z2dlcjo6RGVyaXZlZFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwOiBDb3BpZWQgZnJvbSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0
dXJuUmVmQ291bnRlZFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWNrZWRSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcjo6UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6bG9nZ2VyTmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
YWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpkZXJlZik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmYxKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVybkNvbnN0UmVmQ291bnRlZFJlZik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5SZWZDb3VudGVkUmVmKToKKwogMjAxOS0x
Mi0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggdGhlIG1hY0NhdGFseXN0IGJ1aWxkIGFmdGVyIHIyNTM0ODYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDg3Zjg0NDIxMDFhMGRmN2ZkZjJlYzBkMTRiMTVm
MDc2NDJhMzRlNzIuLmM5MTcwMzYzZWUzYjA0NTBjNjMxMTNhYWE1OGI1ZDk2ZjYxMWJlNTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNjUsNiArNjUsOCBAQCBzZXQoVGVzdFdU
Rl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL09wdGlvblNldC5jcHAKICAgICBUZXN0cy9XVEYvT3B0
aW9uYWwuY3BwCiAgICAgVGVzdHMvV1RGL1BhY2tlZC5jcHAKKyAgICBUZXN0cy9XVEYvUGFja2Vk
UmVmLmNwcAorICAgIFRlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwCiAgICAgVGVzdHMvV1RGL1Bh
cmtpbmdMb3QuY3BwCiAgICAgVGVzdHMvV1RGL1ByaW9yaXR5UXVldWUuY3BwCiAgICAgVGVzdHMv
V1RGL1JlZEJsYWNrVHJlZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmNkY2E3MzVi
MGU0OWZmOWY0OWYxOGNhOGFjNzU0NWZkZTkwODExYi4uN2MyZjhmMzQzZTA2MjdkZGJjODIxMTRj
ZjFjZTAzMTdlODg1NGY4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk2Nyw2ICs5Njcs
OCBAQAogCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRM
b2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSAqLzsg
fTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2
QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyog
VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovOyB9OworCQlF
MzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2NUM4MjNBNDVGQTkwMDYzRDY5QSAv
KiBQYWNrZWRSZWYuY3BwICovOyB9OworCQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFj
a2VkUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOEQ2NUM5MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwICovOyB9Owog
CQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzdFMjFC
MjVCMzkwMDhDNjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwICovOyB9OwogCQlFM0Ex
RTc4MjIxQjI1QjdBMDA4QzYwMDcgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzgwMjFCMjVCNzkwMDhDNjAwNyAvKiBVUkwuY3Bw
ICovOyB9OwogCQlFM0ExRTc4NTIxQjI1QjkxMDA4QzYwMDcgLyogVVJMUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTFFNzg0MjFCMjVC
OTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwICovOyB9OwpAQCAtMjQ5Miw2ICsyNDk0LDggQEAK
IAkJRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTG9ja1Rha2VzV2Vi
VGhyZWFkTG9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NzAyMEM5
MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWRSZWYuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzhENjVDOTIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2Vk
UmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJl
ZlB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTUzRjk1MUYyQ0YzMjEw
MEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4QkMwRjIw
NDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlclRleHRFbmNv
ZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzU5LDYgKzM3NjMsOCBA
QAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJ
Q0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJRTMyQjU0
OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi8sCisJCQkJRTM4RDY1QzgyM0E0NUZB
OTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8sCisJCQkJRTM4RDY1QzkyM0E0NUZBOTAwNjNE
NjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgKi8sCiAJCQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVC
IC8qIFBhcmtpbmdMb3QuY3BwICovLAogCQkJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQ
cmlvcml0eVF1ZXVlLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVk
QmxhY2tUcmVlLmNwcCAqLywKQEAgLTQ0NDgsNiArNDQ1NCw4IEBACiAJCQkJMUE3N0JBQTMxRDlB
RkZGQzAwNUZDNTY4IC8qIE9wdGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYw
MjFEMEE1OTBDMDBGRUJDRjMgLyogT1NPYmplY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RGNTkxRDBBNTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5
UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8q
IFJlZEJsYWNrVHJlZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZFJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9QYWNrZWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YWJlYjc0YzA1NmRhOGVmMTQyMTQ0
YzBjM2M3MTU3YmUwOGU5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYWNrZWRSZWYuY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8
d3RmL1BhY2tlZFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9QYWNrZWRSZWYsIEJhc2ljKQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVm
TG9nZ2VyPiByZWYoYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYt
Pm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBBc3NpZ25tZW50KQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dn
ZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBiOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJl
Zi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYoYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICAgICAgcmVmID0gYzsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJl
ZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHJlZiA9
IGFkb3B0UmVmKGIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAg
IGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYo
YSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYu
cHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICByZWYgPSBhZG9wdFJlZihj
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAi
fCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYo
YykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdGF0aWMgUGFja2VkUmVmPFJlZkxv
Z2dlcj4gcGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCit7Cisg
ICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmLCBS
ZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dn
ZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAg
ICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiByZWYocGFzc1dpdGhSZWYoUGFja2VkUmVmPFJlZkxvZ2dl
cj4oYSkpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBy
ZWYgPSBwYXNzV2l0aFJlZihiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8
IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEp
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIu
Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZjxEZXJpdmVkUmVm
TG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2Vy
PiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVyZW5jZS5wdHIoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZiwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIg
YSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJl
ZjxSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQYWNrZWRSZWY8UmVmTG9nZ2VyPiBwMihiKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5wdHIoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDIucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmPFJlZkxvZ2dlcj4gcDEoYSk7Cisg
ICAgICAgIFBhY2tlZFJlZjxSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBsb2coKSA8PCAifCAi
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMi5wdHIoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAxLnB0cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5wdHIoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihi
KSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitz
dHJ1Y3QgUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgeworICAgIFBhY2tl
ZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVmKCk7
CisgICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0IFBhY2tlZFJlZjxQYWNrZWRSZWZDaGVja2lu
Z1JlZkxvZ2dlcj4qIHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9OworfTsKKworc3RydWN0IERlcml2
ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6IFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2Vy
IHsKKyAgICBEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFt
ZSk7Cit9OworCitQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcjo6UGFja2VkUmVmQ2hlY2tpbmdS
ZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IFJlZkxvZ2dlciB7IG5hbWUgfQorewor
fQorCit2b2lkIFBhY2tlZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChz
bG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0
KCkubmFtZSA8PCAiICI7CisgICAgUmVmTG9nZ2VyOjpyZWYoKTsKK30KKwordm9pZCBQYWNrZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAg
ICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBzbG90VG9DaGVjay0+Z2V0KCkubmFtZSA8PCAiICI7
CisgICAgUmVmTG9nZ2VyOjpkZXJlZigpOworfQorCitEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdS
ZWZMb2dnZXI6OkRlcml2ZWRQYWNrZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBu
YW1lKQorICAgIDogUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKwor
VEVTVChXVEZfUGFja2VkUmVmLCBBc3NpZ25CZWZvcmVEZXJlZikKK3sKKyAgICBEZXJpdmVkUGFj
a2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAgIFBhY2tlZFJlZkNoZWNraW5nUmVm
TG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYygi
YyIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dn
ZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgYi5z
bG90VG9DaGVjayA9ICZyZWY7CisgICAgICAgIHJlZiA9IGI7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVmKGEp
IHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQ
YWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBh
LnNsb3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgYy5zbG90VG9DaGVjayA9ICZyZWY7CisgICAg
ICAgIHJlZiA9IGM7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBj
LnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCByZWYucHRyKCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSB8IHNsb3Q9YSByZWYoYykgc2xvdD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWY8UGFja2VkUmVmQ2hlY2tp
bmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZjsKKyAg
ICAgICAgcmVmID0gYWRvcHRSZWYoYik7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRy
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHJlZi5wdHIoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1iIGRlcmVmKGEpIHwg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNr
ZWRSZWY8UGFja2VkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBhLnNs
b3RUb0NoZWNrID0gJnJlZjsKKyAgICAgICAgcmVmID0gYWRvcHRSZWYoYyk7CisgICAgICAgIGEu
c2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHJlZi5wdHIoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHwgc2xvdD1jIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWRSZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWE3YjBhZDRmZWU1MmQy
MzE5OTc3Y2VmYTA1NDBiNjE1MjQxODRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFja2VkUmVmUHRyLmNwcApAQCAtMCwwICsxLDU1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgor
I2luY2x1ZGUgIlV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZi5oPgor
I2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQmFzaWMpCit7CisgICAgRGVyaXZl
ZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsK
KyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAgICAgICBQ
YWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0
ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gJmE7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9n
Z2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihwMSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFj
a2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxv
Z2dlcj4gcDIgPSBwMTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQ
YWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7Cisg
ICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxE
ZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMiA9IHAxOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAg
ICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgp
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9
IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0K
KyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQor
eworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIHsKKyAgICAgICAgUGFja2VkUmVm
PFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4g
cHRyID0gV1RGTW92ZShwYXNzUmVmKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX1BhY2tlZFJlZlB0ciwgQWRvcHQpCit7CisgICAg
RGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBl
bXB0eTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAg
ICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQ
dHIsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVm
TG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYoYSkgfCBk
ZXJlZihiKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmI7
CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwg
IjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBk
ZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tl
ZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIp
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihi
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
KyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5n
ZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dl
cj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxs
cHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBw
MSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAy
LmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAg
ICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAg
bG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYywg
cHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmMs
IHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgUGFja2VkUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAg
ICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAy
LmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwg
IjsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXdhcm5pbmctb3B0aW9uIgor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1hc3NpZ24tb3ZlcmxvYWRl
ZCIKKyNlbmRpZgorICAgICAgICBwdHIgPSBwdHI7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSB8IHJlZihhKSBkZXJlZihhKSB8IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworI2lmIENPTVBJTEVSKENMQU5H
KQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7
CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5k
aWYKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RF
U1QoV1RGX1BhY2tlZFJlZlB0ciwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAg
IFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dn
ZXI+IHAxKCZhKTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIFBhY2tlZFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDIuZ2V0KCkpOworICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30K
KworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbCkKK3sKKyAgICBSZWZMb2dn
ZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2VyPiByZWZQ
dHIgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIs
IFJlbGVhc2UpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2Vy
IGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAg
UGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAx
LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAg
UGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8RGVyaXZlZFJlZkxvZ2dl
cj4gcDEgPSAmYTsKKyAgICAgICAgUGFja2VkUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3Zl
KHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2Vk
UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQYWNrZWRSZWZQdHI8UmVmTG9nZ2Vy
PiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEg
PSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYo
YikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBQYWNrZWRSZWZQ
dHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxEZXJpdmVkUmVmTG9n
Z2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAg
cDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVy
ZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdGF0aWMgUmVmUHRyPFJlZkxv
Z2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIFBhY2tlZFJlZlB0cjxS
ZWZMb2dnZXI+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9QYWNrZWRSZWZQdHIsIFJldHVyblZh
bHVlKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBm
MShhKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBhdXRvIHB0ciA9IGYxKGEpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7Cit9CisKK3N0cnVjdCBDb25zdFJlZkNvdW50ZWQgOiBSZWZDb3VudGVkPENvbnN0UmVm
Q291bnRlZD4geworICAgIHN0YXRpYyBSZWY8Q29uc3RSZWZDb3VudGVkPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnN0UmVmQ291bnRlZCk7IH0KK307CisKK3N0YXRpYyBjb25z
dCBDb25zdFJlZkNvdW50ZWQmIHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IGluc3RhbmNlLmdldCgpOworfQorc3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291
bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4g
aW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorCitURVNUKFdURl9QYWNr
ZWRSZWZQdHIsIENvbnN0KQoreworICAgIC8vIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgY29tcGls
ZXMgd2l0aG91dCBhbiBlcnJvci4KKyAgICBhdXRvIGEgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0
ZSgpOworICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGIgPSBXVEZNb3ZlKGEp
OworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOwor
ICAgIFBhY2tlZFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNv
dW50ZWRSZWYoKTsKKyAgICBQYWNrZWRSZWZQdHI8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0g
JnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIFBhY2tlZFJlZlB0cjxDb25zdFJlZkNv
dW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAgIFBhY2tlZFJlZlB0cjxj
b25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOworICAgIFBhY2tlZFJlZlB0cjxjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUGFja2VkUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
aShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOworfQorCitzdHJ1Y3QgUGFja2VkUmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgeworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJlZigp
OworICAgIGNvbnN0IFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4q
IHNsb3RUb0NoZWNrIHsgbnVsbHB0ciB9OworfTsKKworUGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZM
b2dnZXI6OlBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisg
ICAgOiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGxvZ2dl
ck5hbWUoY29uc3QgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiYg
cG9pbnRlcikKK3sKKyAgICByZXR1cm4gcG9pbnRlciA/ICZwb2ludGVyLT5uYW1lIDogIm51bGwi
OworfQorCit2b2lkIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAg
IGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1l
KCpzbG90VG9DaGVjaykgPDwgIiAiOworICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQg
UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OmRlcmVmKCkKK3sKKyAgICBpZiAoc2xvdFRv
Q2hlY2spCisgICAgICAgIGxvZygpIDw8ICJzbG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hl
Y2spIDw8ICIgIjsKKyAgICBSZWZMb2dnZXI6OmRlcmVmKCk7Cit9CisKK1RFU1QoV1RGX1BhY2tl
ZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYpCit7CisgICAgUGFja2VkUmVmUHRyQ2hlY2tpbmdS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGIoImIi
KTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0cjxQYWNrZWRSZWZQdHJDaGVja2lu
Z1JlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcDE7
CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAg
ICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5n
ZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBzbG90PWEg
cmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcHRy
OworICAgICAgICBiLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgcHRyID0gJmI7CisgICAg
ICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVs
bHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikg
c2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBQYWNrZWRSZWZQdHI8UGFja2VkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+
IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgYS5z
bG90VG9DaGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIGEuc2xv
dFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgp
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBh
Y2tlZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBhY2tlZFJlZlB0
cjxQYWNrZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAg
IGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAg
IGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0
cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfUGFja2VkUmVmUHRyLCBSZWxl
YXNlTm9uTnVsbEJlZm9yZURlcmVmKQoreworICAgIFBhY2tlZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgUGFja2VkUmVmUHRyPFBhY2tlZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZy
ZWZQdHI7CisgICAgICAgIHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBhLnNsb3RU
b0NoZWNrID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBzbG90
PW51bGwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNw
cAppbmRleCAwOTg4MzA2ZGY4NDZmODNkMzUyYWQ4Nzg0M2Q5MzRkNjdkOTcxMDEyLi5mODgzNTlh
MGJhYTFmODFjOThhZmI3ZGVkY2VmYWQ3M2VhODdlMWM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBURVNUKFdURl9SZWZQdHIs
IFJlbGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBk
ZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKLVJlZlB0cjxSZWZMb2dnZXI+
IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQorc3RhdGljIFJlZlB0cjxSZWZMb2dnZXI+IGYxKFJlZkxv
Z2dlciYgbG9nZ2VyKQogewogICAgIHJldHVybiBSZWZQdHI8UmVmTG9nZ2VyPigmbG9nZ2VyKTsK
IH0KQEAgLTQxNSwxMiArNDE1LDEyIEBAIHN0cnVjdCBDb25zdFJlZkNvdW50ZWQgOiBSZWZDb3Vu
dGVkPENvbnN0UmVmQ291bnRlZD4gewogICAgIHN0YXRpYyBSZWY8Q29uc3RSZWZDb3VudGVkPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnN0UmVmQ291bnRlZCk7IH0KIH07CiAK
LWNvbnN0IENvbnN0UmVmQ291bnRlZCYgcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCkKK3N0YXRp
YyBjb25zdCBDb25zdFJlZkNvdW50ZWQmIHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CiAgICAg
cmV0dXJuIGluc3RhbmNlLmdldCgpOwogfQotQ29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3Vu
dGVkUmVmKCkKK3N0YXRpYyBDb25zdFJlZkNvdW50ZWQmIHJldHVyblJlZkNvdW50ZWRSZWYoKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOwog
ICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsK
</data>
<flag name="review"
          id="401478"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>